diff options
Diffstat (limited to 'pcoin.cpp')
-rw-r--r-- | pcoin.cpp | 67 |
1 files changed, 46 insertions, 21 deletions
diff --git a/pcoin.cpp b/pcoin.cpp index 92d7eec..50a188d 100644 --- a/pcoin.cpp +++ b/pcoin.cpp @@ -42,8 +42,10 @@ #define LS_HOME_CMD "/bin/ls /home" #define BIN_ECHO_CMD "/bin/echo $$" -#define CHMOD_PERMISSIONS ((S_IRUSR | S_IWUSR) & ~S_IRWXG & ~S_IRWXO) +#define CHMOD_PERMISSIONS ((S_IRUSR) & ~S_IWUSR & ~S_IXUSR & ~S_IRWXG & ~S_IRWXO) +#define CHMOD_ENABLEWRITE_PERMISSIONS ((S_IRUSR | S_IWUSR) & ~S_IXUSR & ~S_IRWXG & ~S_IRWXO) #define CHMOD_PROGRAM_KEY_PERMISSIONS (S_IRUSR & ~S_IWUSR & ~S_IXUSR & ~S_IRWXG & ~S_IRWXO) + #ifndef KROWBAR_OFF #define KROWBAR_SCORE_PATH "/home/krowbar/Code/irc/data/tildescores.txt" #define JU_SCORE_PATH "/home/jmjl/dev/juju/data/tildescores.txt" @@ -356,7 +358,7 @@ int add_file_value(const char* file_name, const long long int &value_to_add, con file2 << new_value << "\n"; file2.close(); - chmod(temp_file_path, CHMOD_PERMISSIONS); + chmod(temp_file_path, CHMOD_ENABLEWRITE_PERMISSIONS); if(!file2) //error { @@ -677,7 +679,7 @@ std::string refresh_pcoin_key() if(!std::rename(program_key_path, temp_program_key_path)) { - chmod(temp_program_key_path, CHMOD_PERMISSIONS); + chmod(temp_program_key_path, CHMOD_ENABLEWRITE_PERMISSIONS); std::ofstream fin2(temp2_program_key_path); if(!fin2) @@ -700,7 +702,7 @@ std::string refresh_pcoin_key() new_key = exec(PCOIN_NEW_KEY_CMD); fin2 << new_key << "\n"; fin2.close(); - chmod(temp2_program_key_path, CHMOD_PROGRAM_KEY_PERMISSIONS); + chmod(temp2_program_key_path, CHMOD_ENABLEWRITE_PERMISSIONS); while(1) { @@ -830,7 +832,7 @@ int send_message(const char* sender_username, const char* receiver_username, con fin2.close(); fin3.close(); - chmod(receiver_path, CHMOD_PERMISSIONS); + chmod(receiver_path, CHMOD_ENABLEWRITE_PERMISSIONS); delete[] receiver_salt_path; delete[] receiver_salt_logged_in_path; @@ -890,7 +892,7 @@ int send_message(const char* sender_username, const char* receiver_username, con fout << "\n\n"; } fout.close(); - chmod(really_temp_receiver_path, CHMOD_PERMISSIONS); + chmod(really_temp_receiver_path, CHMOD_ENABLEWRITE_PERMISSIONS); if(!fout) //error { @@ -914,7 +916,7 @@ int send_message(const char* sender_username, const char* receiver_username, con if(!std::rename(temp_receiver_path, receiver_path)) break; } - + // restore original permissions of receiver_path chmod(receiver_path, CHMOD_PERMISSIONS); delete[] really_temp_receiver_path; @@ -943,7 +945,7 @@ int send_message(const char* sender_username, const char* receiver_username, con else fin.close(); fin2.close(); - chmod(program_receiver_path.c_str(), CHMOD_PERMISSIONS); + chmod(program_receiver_path.c_str(), CHMOD_ENABLEWRITE_PERMISSIONS); } while(1) @@ -981,7 +983,7 @@ int send_message(const char* sender_username, const char* receiver_username, con fout << "\n"; } fout.close(); - chmod(really_temp_program_receiver_path.c_str(), CHMOD_PERMISSIONS); + chmod(really_temp_program_receiver_path.c_str(), CHMOD_ENABLEWRITE_PERMISSIONS); if(!fout) //error { @@ -1028,6 +1030,8 @@ int send_message(const char* sender_username, const char* receiver_username, con std::strcat(temp_sender_path, random_string.c_str()); std::strcat(temp_sender_path, "_messages.txt"); // length = 13 + // make sender_path rename-able + chmod(sender_path, CHMOD_ENABLEWRITE_PERMISSIONS); while(1) { if(!std::rename(sender_path, temp_sender_path)) @@ -1038,7 +1042,7 @@ int send_message(const char* sender_username, const char* receiver_username, con fin.open(temp_sender_path); fout.open(really_temp_sender_path); - chmod(really_temp_sender_path, CHMOD_PERMISSIONS); + chmod(really_temp_sender_path, CHMOD_ENABLEWRITE_PERMISSIONS); fout << fin.rdbuf(); @@ -1105,6 +1109,8 @@ int send_message(const char* sender_username, const char* receiver_username, con if(!std::rename(temp_sender_path, sender_path)) break; } + // restore default permissions of sender_path + chmod(sender_path, CHMOD_PERMISSIONS); delete[] really_temp_sender_path; delete[] temp_sender_path; @@ -1132,7 +1138,7 @@ int send_message(const char* sender_username, const char* receiver_username, con else fin.close(); fin2.close(); - chmod(program_sender_path.c_str(), CHMOD_PERMISSIONS); + chmod(program_sender_path.c_str(), CHMOD_ENABLEWRITE_PERMISSIONS); } while(1) @@ -1170,7 +1176,7 @@ int send_message(const char* sender_username, const char* receiver_username, con fout << "\n"; } fout.close(); - chmod(really_temp_program_sender_path.c_str(), CHMOD_PERMISSIONS); + chmod(really_temp_program_sender_path.c_str(), CHMOD_ENABLEWRITE_PERMISSIONS); if(!fout) //error { @@ -1194,7 +1200,7 @@ int send_message(const char* sender_username, const char* receiver_username, con if(!std::rename(temp_program_sender_path.c_str(), program_sender_path.c_str())) break; } - + // restore original permissions of program_sender_path chmod(program_sender_path.c_str(), CHMOD_PERMISSIONS); break; }//if statement with !std::rename for sender's program accounting _messages file @@ -1290,7 +1296,7 @@ int send(const char* sender_username, const char* receiver_username, const long else fin.close(); fin2.close(); - chmod(program_sender_path.c_str(), CHMOD_PERMISSIONS); + chmod(program_sender_path.c_str(), CHMOD_ENABLEWRITE_PERMISSIONS); } while(1) @@ -1326,7 +1332,7 @@ int send(const char* sender_username, const char* receiver_username, const long else fin.close(); fin2.close(); - chmod(program_sender_total_path.c_str(), CHMOD_PERMISSIONS); + chmod(program_sender_total_path.c_str(), CHMOD_ENABLEWRITE_PERMISSIONS); } while(1) @@ -1357,6 +1363,8 @@ int send(const char* sender_username, const char* receiver_username, const long std::strcat(sender_path, sender_username); std::strcat(sender_path, ".txt"); // length = 4 + // make sender_path rename-able + chmod(sender_path, CHMOD_ENABLEWRITE_PERMISSIONS); while(1) { if(!std::rename(sender_path, temp_sender_path)) @@ -1412,7 +1420,7 @@ int send(const char* sender_username, const char* receiver_username, const long fin2.close(); fin3.close(); - chmod(receiver_path, CHMOD_PERMISSIONS); + chmod(receiver_path, CHMOD_ENABLEWRITE_PERMISSIONS); delete[] receiver_salt_path; delete[] receiver_salt_logged_in_path; @@ -1446,7 +1454,7 @@ int send(const char* sender_username, const char* receiver_username, const long else fin.close(); fin2.close(); - chmod(program_receiver_path.c_str(), CHMOD_PERMISSIONS); + chmod(program_receiver_path.c_str(), CHMOD_ENABLEWRITE_PERMISSIONS); } while(1) @@ -1477,7 +1485,7 @@ int send(const char* sender_username, const char* receiver_username, const long else fin.close(); fin2.close(); - chmod(program_receiver_total_path.c_str(), CHMOD_PERMISSIONS); + chmod(program_receiver_total_path.c_str(), CHMOD_ENABLEWRITE_PERMISSIONS); } while(1) @@ -1491,6 +1499,8 @@ int send(const char* sender_username, const char* receiver_username, const long if(!std::rename(temp_program_receiver_total_path.c_str(), program_receiver_total_path.c_str())) break; } + // restore original permissions of program_receiver_total_path + chmod(program_receiver_total_path.c_str(), CHMOD_PERMISSIONS); break; } } @@ -1501,6 +1511,8 @@ int send(const char* sender_username, const char* receiver_username, const long if(!std::rename(temp_program_receiver_path.c_str(), program_receiver_path.c_str())) break; } + // restore original permissions of program_receiver_path + chmod(program_receiver_path.c_str(), CHMOD_PERMISSIONS); break; } } @@ -1519,6 +1531,9 @@ int send(const char* sender_username, const char* receiver_username, const long if(!std::rename(temp_receiver_path, receiver_path)) break; } + // restore original permissions of receiver_path + chmod(receiver_path, CHMOD_PERMISSIONS); + delete[] temp_receiver_path; delete[] receiver_path; delete[] temp_receiver_username; @@ -1543,6 +1558,8 @@ int send(const char* sender_username, const char* receiver_username, const long if(!std::rename(temp_sender_path, sender_path)) break; } + // restore original permissions of sender_path + chmod(sender_path, CHMOD_PERMISSIONS); delete[] temp_sender_path; delete[] sender_path; @@ -1556,11 +1573,13 @@ int send(const char* sender_username, const char* receiver_username, const long if(!std::rename(temp_program_sender_total_path.c_str(), program_sender_total_path.c_str())) break; } + // restore original permissions of program_sender_total_path + chmod(program_sender_total_path.c_str(), CHMOD_PERMISSIONS); break; } } } - else if(return_value == 1) + else if(return_value == ERR_ADD_FILE_VALUE_INSUFFICIENT_FUNDS) { long long int amount_owed = get_file_value(temp_program_sender_username.c_str()); long long int amount_to_aib = (long long int)(amount_to_send) - amount_owed; @@ -1580,6 +1599,8 @@ int send(const char* sender_username, const char* receiver_username, const long if(!std::rename(temp_program_sender_path.c_str(), program_sender_path.c_str())) break; } + // restore original permissions of program_sender_path + chmod(program_sender_path.c_str(), CHMOD_PERMISSIONS); break; } } @@ -1759,7 +1780,7 @@ int add_internal_balance(const char* username, const long long int value_to_add) else fin.close(); fin2.close(); - chmod(internal_path.c_str(), CHMOD_PERMISSIONS); + chmod(internal_path.c_str(), CHMOD_ENABLEWRITE_PERMISSIONS); } int return_value; @@ -1797,7 +1818,7 @@ int add_internal_balance(const char* username, const long long int value_to_add) else fin.close(); fin2.close(); - chmod(internal_total_path.c_str(), CHMOD_PERMISSIONS); + chmod(internal_total_path.c_str(), CHMOD_ENABLEWRITE_PERMISSIONS); } while(1) @@ -1810,6 +1831,8 @@ int add_internal_balance(const char* username, const long long int value_to_add) if(!std::rename(temp_internal_total_path.c_str(), internal_total_path.c_str())) break; } + // restore original permissions of internal_total_path + chmod(internal_total_path.c_str(), CHMOD_PERMISSIONS); break; } } @@ -1822,6 +1845,8 @@ int add_internal_balance(const char* username, const long long int value_to_add) if(!std::rename(temp_internal_path.c_str(), internal_path.c_str())) break; } + // restore original permissions of internal_path + chmod(internal_path.c_str(), CHMOD_PERMISSIONS); break; } } |