]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
Always return a result string for a processed workitem
authorAndreas Steffen <andreas.steffen@strongswan.org>
Thu, 4 Jul 2013 20:55:58 +0000 (22:55 +0200)
committerAndreas Steffen <andreas.steffen@strongswan.org>
Thu, 4 Jul 2013 20:55:58 +0000 (22:55 +0200)
src/libimcv/plugins/imv_os/imv_os_agent.c
src/libpts/plugins/imv_attestation/imv_attestation_agent.c
src/libpts/plugins/imv_attestation/imv_attestation_process.c

index d8affb9ef061a4984a35ed3f873eccdfafd186a7..ba3f3afc62156945347db66883876d385f81f140 100644 (file)
@@ -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;
index b5fde98304546d8b43dc85d0409b618359b8d919..023a7eb41b0db722b4ed50f0c85169ed65d8a3b2 100644 (file)
@@ -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);
index 5c00022571f3e00a7337f5451a80b8ff3dc39b92..d422ebcdafb7422b2564843b9dcb67716aed0a19 100644 (file)
@@ -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);