diff options
author | Andreas Steffen <andreas.steffen@strongswan.org> | 2013-07-04 22:55:58 +0200 |
---|---|---|
committer | Andreas Steffen <andreas.steffen@strongswan.org> | 2013-07-04 22:55:58 +0200 |
commit | 69c4e34859e42e3ea30d3e60482326c7217ff6b9 (patch) | |
tree | e423ecb47c9055c43eaaa12607d7f5ca0ee6ca53 /src | |
parent | 7658b399b7725409f81eed4e15923dd199754d55 (diff) | |
download | strongswan-69c4e34859e42e3ea30d3e60482326c7217ff6b9.tar.bz2 strongswan-69c4e34859e42e3ea30d3e60482326c7217ff6b9.tar.xz |
Always return a result string for a processed workitem
Diffstat (limited to 'src')
-rw-r--r-- | src/libimcv/plugins/imv_os/imv_os_agent.c | 14 | ||||
-rw-r--r-- | src/libpts/plugins/imv_attestation/imv_attestation_agent.c | 8 | ||||
-rw-r--r-- | src/libpts/plugins/imv_attestation/imv_attestation_process.c | 15 |
3 files changed, 25 insertions, 12 deletions
diff --git a/src/libimcv/plugins/imv_os/imv_os_agent.c b/src/libimcv/plugins/imv_os/imv_os_agent.c index d8affb9ef..ba3f3afc6 100644 --- a/src/libimcv/plugins/imv_os/imv_os_agent.c +++ b/src/libimcv/plugins/imv_os/imv_os_agent.c @@ -642,7 +642,7 @@ METHOD(imv_agent_if_t, batch_ending, TNC_Result, { TNC_IMV_Evaluation_Result eval; TNC_IMV_Action_Recommendation rec; - char buf[BUF_LEN], *result_str; + char result_str[BUF_LEN]; bool fail; enumerator = session->create_workitem_enumerator(session); @@ -670,12 +670,11 @@ METHOD(imv_agent_if_t, batch_ending, TNC_Result, fail = count_update || count_blacklist; eval = fail ? TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MINOR : TNC_IMV_EVALUATION_RESULT_COMPLIANT; - snprintf(buf, BUF_LEN, "processed %d packages: " + snprintf(result_str, BUF_LEN, "processed %d packages: " "%d not updated, %d blacklisted, %d ok, " "%d not found", count, count_update, count_blacklist, count_ok, count - count_update - count_blacklist - count_ok); - result_str = buf; break; } case IMV_WORKITEM_UNKNOWN_SOURCE: @@ -687,7 +686,8 @@ METHOD(imv_agent_if_t, batch_ending, TNC_Result, OS_SETTINGS_UNKNOWN_SOURCE; eval = fail ? TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MINOR : TNC_IMV_EVALUATION_RESULT_COMPLIANT; - result_str = fail ? "unknown sources enabled" : ""; + snprintf(result_str, BUF_LEN, "unknown sources%s enabled", + fail ? "" : " not"); break; case IMV_WORKITEM_FORWARDING: if (!(received & IMV_OS_ATTR_FORWARDING_ENABLED)) @@ -698,7 +698,8 @@ METHOD(imv_agent_if_t, batch_ending, TNC_Result, OS_SETTINGS_FWD_ENABLED; eval = fail ? TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MAJOR : TNC_IMV_EVALUATION_RESULT_COMPLIANT; - result_str = fail ? "forwarding enabled" : ""; + snprintf(result_str, BUF_LEN, "forwarding%s enabled", + fail ? "" : " not"); break; case IMV_WORKITEM_DEFAULT_PWD: if (!(received & IMV_OS_ATTR_FACTORY_DEFAULT_PWD_ENABLED)) @@ -709,7 +710,8 @@ METHOD(imv_agent_if_t, batch_ending, TNC_Result, OS_SETTINGS_DEFAULT_PWD_ENABLED; eval = fail ? TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MAJOR : TNC_IMV_EVALUATION_RESULT_COMPLIANT; - result_str = fail ? "default password enabled" : ""; + snprintf(result_str, BUF_LEN, "factory default password%s enabled", + fail ? "" : " not"); break; default: continue; diff --git a/src/libpts/plugins/imv_attestation/imv_attestation_agent.c b/src/libpts/plugins/imv_attestation/imv_attestation_agent.c index b5fde9830..023a7eb41 100644 --- a/src/libpts/plugins/imv_attestation/imv_attestation_agent.c +++ b/src/libpts/plugins/imv_attestation/imv_attestation_agent.c @@ -385,15 +385,19 @@ METHOD(imv_agent_if_t, batch_ending, TNC_Result, { TNC_IMV_Action_Recommendation rec; TNC_IMV_Evaluation_Result eval; + char result_str[BUF_LEN]; DBG2(DBG_IMV, "IMV %d requests metadata for %s '%s'", imv_id, is_dir ? "directory" : "file", pathname); + + /* currently just fire and forget metadata requests */ attr = tcg_pts_attr_req_file_meta_create(is_dir, delimiter, pathname); - /* currently just fire and forget metadata requests */ + snprintf(result_str, BUF_LEN, "%s metadata requested", + is_dir ? "directory" : "file"); eval = TNC_IMV_EVALUATION_RESULT_COMPLIANT; session->remove_workitem(session, enumerator); - rec = workitem->set_result(workitem, "", eval); + rec = workitem->set_result(workitem, result_str, eval); state->update_recommendation(state, rec, eval); imcv_db->finalize_workitem(imcv_db, workitem); workitem->destroy(workitem); diff --git a/src/libpts/plugins/imv_attestation/imv_attestation_process.c b/src/libpts/plugins/imv_attestation/imv_attestation_process.c index 5c0002257..d422ebcda 100644 --- a/src/libpts/plugins/imv_attestation/imv_attestation_process.c +++ b/src/libpts/plugins/imv_attestation/imv_attestation_process.c @@ -204,8 +204,8 @@ bool imv_attestation_process(pa_tnc_attr_t *attr, imv_msg_t *out_msg, imv_session_t *session; imv_workitem_t *workitem, *found = NULL; imv_workitem_type_t type; - char *platform_info; - bool is_dir; + char result_str[BUF_LEN], *platform_info; + bool is_dir, correct; enumerator_t *enumerator; eval = TNC_IMV_EVALUATION_RESULT_COMPLIANT; @@ -270,7 +270,8 @@ bool imv_attestation_process(pa_tnc_attr_t *attr, imv_msg_t *out_msg, eval = TNC_IMV_EVALUATION_RESULT_ERROR; break; } - if (!measurements->verify(measurements, e, is_dir)) + correct = measurements->verify(measurements, e, is_dir); + if (!correct) { attestation_state->set_measurement_error( attestation_state, @@ -278,6 +279,10 @@ bool imv_attestation_process(pa_tnc_attr_t *attr, imv_msg_t *out_msg, eval = TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MINOR; } e->destroy(e); + + snprintf(result_str, BUF_LEN, "%s measurement%s correct", + is_dir ? "directory" : "file", + correct ? "" : " not"); break; } case IMV_WORKITEM_FILE_REF_MEAS: @@ -298,6 +303,8 @@ bool imv_attestation_process(pa_tnc_attr_t *attr, imv_msg_t *out_msg, } } e->destroy(e); + snprintf(result_str, BUF_LEN, "%s reference measurement " + "successful", is_dir ? "directory" : "file"); break; } default: @@ -306,7 +313,7 @@ bool imv_attestation_process(pa_tnc_attr_t *attr, imv_msg_t *out_msg, session->remove_workitem(session, enumerator); enumerator->destroy(enumerator); - rec = found->set_result(found, "", eval); + rec = found->set_result(found, result_str, eval); state->update_recommendation(state, rec, eval); imcv_db->finalize_workitem(imcv_db, found); found->destroy(found); |