diff options
author | vakwetu <vakwetu@c9f7a03b-bd48-0410-a16d-cbbf54688b0b> | 2010-10-01 04:54:26 +0000 |
---|---|---|
committer | vakwetu <vakwetu@c9f7a03b-bd48-0410-a16d-cbbf54688b0b> | 2010-10-01 04:54:26 +0000 |
commit | af1b75a4cef58c147915b61688850cbdc439ec0d (patch) | |
tree | 8594b17d1cb968942b0c977ca658422ba04e0fdb /pki/base/tps | |
parent | dada0e735e718f2c4f69566045ec7b8b75d4a969 (diff) | |
download | pki-af1b75a4cef58c147915b61688850cbdc439ec0d.tar.gz pki-af1b75a4cef58c147915b61688850cbdc439ec0d.tar.xz pki-af1b75a4cef58c147915b61688850cbdc439ec0d.zip |
Bugzilla Bug 637824 - TPS UI: Profile state in CS.cfg is Pending Approval after agent approve and Enable
git-svn-id: svn+ssh://svn.fedorahosted.org/svn/pki/trunk@1327 c9f7a03b-bd48-0410-a16d-cbbf54688b0b
Diffstat (limited to 'pki/base/tps')
-rw-r--r-- | pki/base/tps/src/engine/RA.cpp | 17 | ||||
-rw-r--r-- | pki/base/tps/src/include/main/ConfigStore.h | 2 | ||||
-rw-r--r-- | pki/base/tps/src/main/ConfigStore.cpp | 31 | ||||
-rw-r--r-- | pki/base/tps/src/main/RA_pblock.cpp | 2 | ||||
-rw-r--r-- | pki/base/tps/src/modules/tokendb/mod_tokendb.cpp | 45 | ||||
-rw-r--r-- | pki/base/tps/src/processor/RA_Enroll_Processor.cpp | 4 | ||||
-rw-r--r-- | pki/base/tps/src/processor/RA_Processor.cpp | 2 |
7 files changed, 87 insertions, 16 deletions
diff --git a/pki/base/tps/src/engine/RA.cpp b/pki/base/tps/src/engine/RA.cpp index 50910c438..8d9e335fa 100644 --- a/pki/base/tps/src/engine/RA.cpp +++ b/pki/base/tps/src/engine/RA.cpp @@ -2102,6 +2102,9 @@ loser: TPS_PUBLIC void RA::SetFlushInterval(int interval) { char interval_str[512]; + int status; + char error_msg[512]; + RA::Debug("RA::SetFlushInterval", "Setting flush interval to %d seconds", interval); m_flush_interval = interval; @@ -2114,13 +2117,19 @@ TPS_PUBLIC void RA::SetFlushInterval(int interval) PR_snprintf((char *) interval_str, 512, "%d", interval); m_cfg->Add(CFG_AUDIT_FLUSH_INTERVAL, interval_str); - m_cfg->Commit(false); + status = m_cfg->Commit(false, error_msg, 512); + if (status != 0) { + RA::Debug("RA:SetFlushInterval", error_msg); + } } TPS_PUBLIC void RA::SetBufferSize(int size) { char * new_buffer; char size_str[512]; + int status; + char error_msg[512]; + RA::Debug("RA::SetBufferSize", "Setting buffer size to %d bytes", size); PR_EnterMonitor(m_audit_log_monitor); @@ -2136,7 +2145,11 @@ TPS_PUBLIC void RA::SetBufferSize(int size) PR_snprintf((char *) size_str, 512, "%d", size); m_cfg->Add(CFG_AUDIT_BUFFER_SIZE, size_str); - m_cfg->Commit(false); + + status = m_cfg->Commit(false, error_msg, 512); + if (status != 0) { + RA::Debug("RA:SetFlushInterval", error_msg); + } } diff --git a/pki/base/tps/src/include/main/ConfigStore.h b/pki/base/tps/src/include/main/ConfigStore.h index 429122fbf..d34e0ce7b 100644 --- a/pki/base/tps/src/include/main/ConfigStore.h +++ b/pki/base/tps/src/include/main/ConfigStore.h @@ -85,7 +85,7 @@ class ConfigStore bool GetConfigAsBool(const char *key); TPS_PUBLIC bool GetConfigAsBool(const char *key, bool def); TOKENDB_PUBLIC const char *GetConfigAsString(const char *key, const char *def); - TPS_PUBLIC int Commit(const bool backup); + TPS_PUBLIC int Commit(const bool backup, char* error_msg, int len); TPS_PUBLIC const char *GetConfigAsString(const char *key); TPS_PUBLIC const char *GetOrderedList(); /** diff --git a/pki/base/tps/src/main/ConfigStore.cpp b/pki/base/tps/src/main/ConfigStore.cpp index fb422a0b5..e526b4039 100644 --- a/pki/base/tps/src/main/ConfigStore.cpp +++ b/pki/base/tps/src/main/ConfigStore.cpp @@ -741,16 +741,19 @@ TPS_PUBLIC const char* ConfigStore::GetOrderedList() /** * Commits changes to the config file */ -TPS_PUBLIC int ConfigStore::Commit(const bool backup) +TPS_PUBLIC int ConfigStore::Commit(const bool backup, char *error_msg, int len) { char name_tmp[256], cdate[256], name_bak[256], bak_dir[256]; char basename[256], dirname[256]; PRFileDesc *ftmp = NULL; PRExplodedTime time; PRTime now; + PRStatus status; - if (m_cfg_file_path == NULL) + if (m_cfg_file_path == NULL) { + PR_snprintf(error_msg, len, "ConfigStore::Commit(): m_cfg_file_path is NULL!"); return 1; + } if (strrchr(m_cfg_file_path, '/') != NULL) { PR_snprintf((char *) basename, 256, "%s", strrchr(m_cfg_file_path, '/') +1); @@ -773,6 +776,7 @@ TPS_PUBLIC int ConfigStore::Commit(const bool backup) ftmp = PR_Open(name_tmp, PR_WRONLY| PR_CREATE_FILE, 00400|00200); if (ftmp == NULL) { // unable to create temporary config file + PR_snprintf(error_msg, len, "ConfigStore::Commit(): unable to create temporary config file"); return 1; } @@ -812,9 +816,28 @@ TPS_PUBLIC int ConfigStore::Commit(const bool backup) if (PR_Access(bak_dir, PR_ACCESS_EXISTS) != PR_SUCCESS) { PR_MkDir(bak_dir, 00770); } - PR_Rename(m_cfg_file_path, name_bak); + status = PR_Rename(m_cfg_file_path, name_bak); + if (status != PR_SUCCESS) { + // failed to back up CS.cfg + } + } + if (PR_Access(m_cfg_file_path, PR_ACCESS_EXISTS) == PR_SUCCESS) { + // backup is false, or backup failed + status = PR_Delete(m_cfg_file_path); + if (status != PR_SUCCESS) { + // failed to delete old CS.cfg file + PR_snprintf(error_msg, len, "ConfigStore::Commit(): unable to delete old CS.cfg file"); + return 1; + } + } + + status = PR_Rename(name_tmp, m_cfg_file_path); + if (status != PR_SUCCESS) { + // failed to move tmp to CS.cfg + // major badness - we now have only tmp file, no CS.cfg + PR_snprintf(error_msg, len, "ConfigStore::Commit(): failed to move tmp file to CS.cfg"); + return 1; } - PR_Rename(name_tmp, m_cfg_file_path); return 0; } diff --git a/pki/base/tps/src/main/RA_pblock.cpp b/pki/base/tps/src/main/RA_pblock.cpp index bea84363a..e59e4c7f1 100644 --- a/pki/base/tps/src/main/RA_pblock.cpp +++ b/pki/base/tps/src/main/RA_pblock.cpp @@ -156,7 +156,7 @@ void RA_pblock::free_pblock() } if( m_nvs[i]->value_s ) { - delete( m_nvs[i]->value_s ); + PL_strfree( m_nvs[i]->value_s ); m_nvs[i]->value_s = NULL; } diff --git a/pki/base/tps/src/modules/tokendb/mod_tokendb.cpp b/pki/base/tps/src/modules/tokendb/mod_tokendb.cpp index 28c56bd33..30d87a2ae 100644 --- a/pki/base/tps/src/modules/tokendb/mod_tokendb.cpp +++ b/pki/base/tps/src/modules/tokendb/mod_tokendb.cpp @@ -2824,6 +2824,7 @@ void get_config_state_timestamp(char *type, char *name, char **pstate, char **pt bool commit_needed = false; const char *tmp_state = NULL; const char *tmp_timestamp = NULL; + int status; PRLock *config_lock = RA::GetConfigLock(); PR_Lock(config_lock); @@ -2852,7 +2853,11 @@ void get_config_state_timestamp(char *type, char *name, char **pstate, char **pt PR_Unlock(config_lock); if (commit_needed) { - RA::GetConfigStore()->Commit(false); + char error_msg[512]; + status = RA::GetConfigStore()->Commit(false, error_msg, 512); + if (status != 0) { + tokendbDebug(error_msg); + } } } @@ -4962,7 +4967,11 @@ mod_tokendb_handler( request_rec *rq ) remove_config_state_timestamp(ptype, pname); tokendbDebug("Committing delete .."); - RA::GetConfigStore()->Commit(true); + char error_msg[512]; + status = RA::GetConfigStore()->Commit(true, error_msg, 512); + if (status != 0) { + tokendbDebug(error_msg); + } PR_snprintf(oString, 512, "%s", pname); PR_snprintf(pLongString, 4096, "%s;;%s", configname, new_value); @@ -5126,6 +5135,12 @@ mod_tokendb_handler( request_rec *rq ) goto agent_change_config_state_cleanup; } + char error_msg[512]; + status = RA::GetConfigStore()->Commit(false, error_msg, 512); + if (status != 0) { + tokendbDebug(error_msg); + } + PR_snprintf( injection, MAX_INJECTION_SIZE, "%s%s%s%s%s%s%s%s%s%s%s%s%s%s", JS_START, "var uriBase = \"", uri, "\";\n", @@ -5559,6 +5574,12 @@ mod_tokendb_handler( request_rec *rq ) return_done=1; goto confirm_config_changes_cleanup; } + char error_msg[512]; + status = RA::GetConfigStore()->Commit(false, error_msg, 512); + if (status != 0) { + tokendbDebug(error_msg); + } + PR_snprintf(flash, 512, "Configuration Parameters have been submitted for Agent Approval"); } else { PR_snprintf(flash, 512, "The data displayed is up-to-date. No changes need to be saved."); @@ -5708,8 +5729,20 @@ mod_tokendb_handler( request_rec *rq ) } if ((PL_strlen(added_str) != 0) || (PL_strlen(deleted_str) != 0) || (PL_strlen(changed_str) != 0)) { - RA::GetConfigStore()->Commit(true); + char error_msg[512]; + status = RA::GetConfigStore()->Commit(true, error_msg, 512); + if (status != 0) { + tokendbDebug(error_msg); + } + RA::Audit(EV_CONFIG, AUDIT_MSG_CONFIG, userid, "Admin", "Success", "", "", "config changes committed to filesystem"); + } else { + // commit state changes + char error_msg[512]; + status = RA::GetConfigStore()->Commit(false, error_msg, 512); + if (status != 0) { + tokendbDebug(error_msg); + } } PR_snprintf( injection, MAX_INJECTION_SIZE, @@ -7229,7 +7262,11 @@ mod_tokendb_handler( request_rec *rq ) if (need_update == 1) { tokendbDebug("Updating signed audit events in CS.cfg"); - RA::GetConfigStore()->Commit(true); + char error_msg[512]; + status = RA::GetConfigStore()->Commit(true, error_msg, 512); + if (status != 0) { + tokendbDebug(error_msg); + } } PR_snprintf(injection, MAX_INJECTION_SIZE, diff --git a/pki/base/tps/src/processor/RA_Enroll_Processor.cpp b/pki/base/tps/src/processor/RA_Enroll_Processor.cpp index fc03c0bcf..66e724718 100644 --- a/pki/base/tps/src/processor/RA_Enroll_Processor.cpp +++ b/pki/base/tps/src/processor/RA_Enroll_Processor.cpp @@ -1176,9 +1176,7 @@ bool RA_Enroll_Processor::CheckAndUpgradeApplet( PR_snprintf((char *)configname, 256, "%s.%s.update.applet.enable", OP_PREFIX, a_tokenType); if (RA::GetConfigStore()->GetConfigAsBool(configname, 0)) { PR_snprintf((char *)configname, 256, "%s.%s.update.applet.requiredVersion", OP_PREFIX, a_tokenType); - if (g_applet_target_version == NULL) { - g_applet_target_version = RA::GetConfigStore()->GetConfigAsString(configname); - } + g_applet_target_version = RA::GetConfigStore()->GetConfigAsString(configname); if (g_applet_target_version == NULL) { RA::Error(FN, "upgrade.version not found"); o_status = STATUS_ERROR_MISCONFIGURATION; diff --git a/pki/base/tps/src/processor/RA_Processor.cpp b/pki/base/tps/src/processor/RA_Processor.cpp index 98f2b5371..3daa252ee 100644 --- a/pki/base/tps/src/processor/RA_Processor.cpp +++ b/pki/base/tps/src/processor/RA_Processor.cpp @@ -2415,7 +2415,7 @@ int RA_Processor::ComputeRandomData(Buffer &data_out, int dataSize, const char if(dstr) { data_out = *decodedRandomData; - delete dstr; + delete [] dstr; dstr = NULL; } if(decodedRandomData) { |