static void test_safe_compare(void) { assert_true(StringSafeCompare(NULL, NULL) == 0); assert_true(StringSafeCompare(NULL, "a") != 0); assert_true(StringSafeCompare("a", NULL) != 0); assert_true(StringSafeCompare("a", "a") == 0); assert_true(StringSafeCompare("a", "b") != 0); }
static bool AccessParseTreeCheck(const Promise *pp, Seq *errors) { bool success = true; bool isResourceType = false; bool isReportDataSelect = false; Constraint *data_select_const = NULL; for (size_t i = 0; i <SeqLength(pp->conlist); i++) { Constraint *con = SeqAt(pp->conlist, i); if (StringSafeCompare("resource_type", con->lval) == 0) { if (con->rval.type == RVAL_TYPE_SCALAR) { if (StringSafeCompare("query", (char*)con->rval.item) == 0) { isResourceType = true; } } } else if (StringSafeCompare("report_data_select", con->lval) == 0) { data_select_const = con; isReportDataSelect = true; } } if (isReportDataSelect && !isResourceType) { SeqAppend(errors, PolicyErrorNew(POLICY_ELEMENT_TYPE_CONSTRAINT, data_select_const, POLICY_ERROR_WRONG_RESOURCE_FOR_DATA_SELECT)); success = false; } return success; }
static int CompareHosts(const void *a, const void *b) { return StringSafeCompare(((HostProperties*)a)->Hostname, ((HostProperties*)b)->Hostname); }
bool StringSafeEqual(const char *const a, const char *const b) { return (StringSafeCompare(a, b) == 0); }