bool xccdf_tailoring_remove_profile(struct xccdf_tailoring *tailoring, struct xccdf_profile *profile) { assert(xccdf_profile_get_tailoring(profile)); // We have to make sure there is no other profile in tailoring that inherits // the profile we are about to remove. const char *profile_id = xccdf_profile_get_id(profile); struct xccdf_profile_iterator* it = xccdf_tailoring_get_profiles(tailoring); while (xccdf_profile_iterator_has_more(it)) { struct xccdf_profile* prof = xccdf_profile_iterator_next(it); if (prof == profile) continue; const char *extends = xccdf_profile_get_extends(prof); if (oscap_strcmp(profile_id, extends) == 0) { oscap_seterr(OSCAP_EFAMILY_XML, "Can't remove given profile '%s' from tailoring. Other profiles are inheriting from it!", profile_id); return false; xccdf_profile_iterator_free(it); } } xccdf_profile_iterator_free(it); return oscap_list_remove(tailoring->profiles, XITEM(profile), (oscap_cmp_func)_list_ptreq_cmp, NULL); }
oval_result_t oval_string_cmp(const char *state, const char *syschar, oval_operation_t operation) { syschar = syschar ? syschar : ""; switch (operation) { case OVAL_OPERATION_EQUALS: return oscap_strcmp(state, syschar) ? OVAL_RESULT_FALSE : OVAL_RESULT_TRUE; case OVAL_OPERATION_CASE_INSENSITIVE_EQUALS: return istrcmp(state, syschar) ? OVAL_RESULT_FALSE : OVAL_RESULT_TRUE; case OVAL_OPERATION_NOT_EQUAL: return oscap_strcmp(state, syschar) ? OVAL_RESULT_TRUE : OVAL_RESULT_FALSE; case OVAL_OPERATION_CASE_INSENSITIVE_NOT_EQUAL: return istrcmp(state, syschar) ? OVAL_RESULT_TRUE : OVAL_RESULT_FALSE; case OVAL_OPERATION_PATTERN_MATCH: return strregcomp(state, syschar); default: oscap_seterr(OSCAP_EFAMILY_OVAL, "Invalid type of operation in string evaluation: %d.", operation); } return OVAL_RESULT_ERROR; }
/** * Filter function returning true if the check/@selector matches with selectid */ static bool _xccdf_check_filter_selector(struct xccdf_check *check, char *selectid) { return !oscap_strcmp((char*) xccdf_check_get_selector(check), selectid); }
bool oscap_streq(const char *s1, const char *s2) { return (oscap_strcmp(s1, s2) == 0); }