Always return a result string for a processed workitem
This commit is contained in:
@@ -642,7 +642,7 @@ METHOD(imv_agent_if_t, batch_ending, TNC_Result,
|
|||||||
{
|
{
|
||||||
TNC_IMV_Evaluation_Result eval;
|
TNC_IMV_Evaluation_Result eval;
|
||||||
TNC_IMV_Action_Recommendation rec;
|
TNC_IMV_Action_Recommendation rec;
|
||||||
char buf[BUF_LEN], *result_str;
|
char result_str[BUF_LEN];
|
||||||
bool fail;
|
bool fail;
|
||||||
|
|
||||||
enumerator = session->create_workitem_enumerator(session);
|
enumerator = session->create_workitem_enumerator(session);
|
||||||
@@ -670,12 +670,11 @@ METHOD(imv_agent_if_t, batch_ending, TNC_Result,
|
|||||||
fail = count_update || count_blacklist;
|
fail = count_update || count_blacklist;
|
||||||
eval = fail ? TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MINOR :
|
eval = fail ? TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MINOR :
|
||||||
TNC_IMV_EVALUATION_RESULT_COMPLIANT;
|
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 updated, %d blacklisted, %d ok, "
|
||||||
"%d not found",
|
"%d not found",
|
||||||
count, count_update, count_blacklist, count_ok,
|
count, count_update, count_blacklist, count_ok,
|
||||||
count - count_update - count_blacklist - count_ok);
|
count - count_update - count_blacklist - count_ok);
|
||||||
result_str = buf;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case IMV_WORKITEM_UNKNOWN_SOURCE:
|
case IMV_WORKITEM_UNKNOWN_SOURCE:
|
||||||
@@ -687,7 +686,8 @@ METHOD(imv_agent_if_t, batch_ending, TNC_Result,
|
|||||||
OS_SETTINGS_UNKNOWN_SOURCE;
|
OS_SETTINGS_UNKNOWN_SOURCE;
|
||||||
eval = fail ? TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MINOR :
|
eval = fail ? TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MINOR :
|
||||||
TNC_IMV_EVALUATION_RESULT_COMPLIANT;
|
TNC_IMV_EVALUATION_RESULT_COMPLIANT;
|
||||||
result_str = fail ? "unknown sources enabled" : "";
|
snprintf(result_str, BUF_LEN, "unknown sources%s enabled",
|
||||||
|
fail ? "" : " not");
|
||||||
break;
|
break;
|
||||||
case IMV_WORKITEM_FORWARDING:
|
case IMV_WORKITEM_FORWARDING:
|
||||||
if (!(received & IMV_OS_ATTR_FORWARDING_ENABLED))
|
if (!(received & IMV_OS_ATTR_FORWARDING_ENABLED))
|
||||||
@@ -698,7 +698,8 @@ METHOD(imv_agent_if_t, batch_ending, TNC_Result,
|
|||||||
OS_SETTINGS_FWD_ENABLED;
|
OS_SETTINGS_FWD_ENABLED;
|
||||||
eval = fail ? TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MAJOR :
|
eval = fail ? TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MAJOR :
|
||||||
TNC_IMV_EVALUATION_RESULT_COMPLIANT;
|
TNC_IMV_EVALUATION_RESULT_COMPLIANT;
|
||||||
result_str = fail ? "forwarding enabled" : "";
|
snprintf(result_str, BUF_LEN, "forwarding%s enabled",
|
||||||
|
fail ? "" : " not");
|
||||||
break;
|
break;
|
||||||
case IMV_WORKITEM_DEFAULT_PWD:
|
case IMV_WORKITEM_DEFAULT_PWD:
|
||||||
if (!(received & IMV_OS_ATTR_FACTORY_DEFAULT_PWD_ENABLED))
|
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;
|
OS_SETTINGS_DEFAULT_PWD_ENABLED;
|
||||||
eval = fail ? TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MAJOR :
|
eval = fail ? TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MAJOR :
|
||||||
TNC_IMV_EVALUATION_RESULT_COMPLIANT;
|
TNC_IMV_EVALUATION_RESULT_COMPLIANT;
|
||||||
result_str = fail ? "default password enabled" : "";
|
snprintf(result_str, BUF_LEN, "factory default password%s enabled",
|
||||||
|
fail ? "" : " not");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -385,15 +385,19 @@ METHOD(imv_agent_if_t, batch_ending, TNC_Result,
|
|||||||
{
|
{
|
||||||
TNC_IMV_Action_Recommendation rec;
|
TNC_IMV_Action_Recommendation rec;
|
||||||
TNC_IMV_Evaluation_Result eval;
|
TNC_IMV_Evaluation_Result eval;
|
||||||
|
char result_str[BUF_LEN];
|
||||||
|
|
||||||
DBG2(DBG_IMV, "IMV %d requests metadata for %s '%s'",
|
DBG2(DBG_IMV, "IMV %d requests metadata for %s '%s'",
|
||||||
imv_id, is_dir ? "directory" : "file", pathname);
|
imv_id, is_dir ? "directory" : "file", pathname);
|
||||||
|
|
||||||
|
/* currently just fire and forget metadata requests */
|
||||||
attr = tcg_pts_attr_req_file_meta_create(is_dir,
|
attr = tcg_pts_attr_req_file_meta_create(is_dir,
|
||||||
delimiter, pathname);
|
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;
|
eval = TNC_IMV_EVALUATION_RESULT_COMPLIANT;
|
||||||
session->remove_workitem(session, enumerator);
|
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);
|
state->update_recommendation(state, rec, eval);
|
||||||
imcv_db->finalize_workitem(imcv_db, workitem);
|
imcv_db->finalize_workitem(imcv_db, workitem);
|
||||||
workitem->destroy(workitem);
|
workitem->destroy(workitem);
|
||||||
|
|||||||
@@ -204,8 +204,8 @@ bool imv_attestation_process(pa_tnc_attr_t *attr, imv_msg_t *out_msg,
|
|||||||
imv_session_t *session;
|
imv_session_t *session;
|
||||||
imv_workitem_t *workitem, *found = NULL;
|
imv_workitem_t *workitem, *found = NULL;
|
||||||
imv_workitem_type_t type;
|
imv_workitem_type_t type;
|
||||||
char *platform_info;
|
char result_str[BUF_LEN], *platform_info;
|
||||||
bool is_dir;
|
bool is_dir, correct;
|
||||||
enumerator_t *enumerator;
|
enumerator_t *enumerator;
|
||||||
|
|
||||||
eval = TNC_IMV_EVALUATION_RESULT_COMPLIANT;
|
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;
|
eval = TNC_IMV_EVALUATION_RESULT_ERROR;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (!measurements->verify(measurements, e, is_dir))
|
correct = measurements->verify(measurements, e, is_dir);
|
||||||
|
if (!correct)
|
||||||
{
|
{
|
||||||
attestation_state->set_measurement_error(
|
attestation_state->set_measurement_error(
|
||||||
attestation_state,
|
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;
|
eval = TNC_IMV_EVALUATION_RESULT_NONCOMPLIANT_MINOR;
|
||||||
}
|
}
|
||||||
e->destroy(e);
|
e->destroy(e);
|
||||||
|
|
||||||
|
snprintf(result_str, BUF_LEN, "%s measurement%s correct",
|
||||||
|
is_dir ? "directory" : "file",
|
||||||
|
correct ? "" : " not");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case IMV_WORKITEM_FILE_REF_MEAS:
|
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);
|
e->destroy(e);
|
||||||
|
snprintf(result_str, BUF_LEN, "%s reference measurement "
|
||||||
|
"successful", is_dir ? "directory" : "file");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@@ -306,7 +313,7 @@ bool imv_attestation_process(pa_tnc_attr_t *attr, imv_msg_t *out_msg,
|
|||||||
|
|
||||||
session->remove_workitem(session, enumerator);
|
session->remove_workitem(session, enumerator);
|
||||||
enumerator->destroy(enumerator);
|
enumerator->destroy(enumerator);
|
||||||
rec = found->set_result(found, "", eval);
|
rec = found->set_result(found, result_str, eval);
|
||||||
state->update_recommendation(state, rec, eval);
|
state->update_recommendation(state, rec, eval);
|
||||||
imcv_db->finalize_workitem(imcv_db, found);
|
imcv_db->finalize_workitem(imcv_db, found);
|
||||||
found->destroy(found);
|
found->destroy(found);
|
||||||
|
|||||||
Reference in New Issue
Block a user