From 79d5de8a58344470a4febd3472ec9b3c0b150132 Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Mon, 19 Mar 2012 08:02:06 +0100 Subject: [PATCH 1/2] Make the string_equal() function public --- src/providers/simple/simple_access.c | 17 ++++------------- src/util/sss_utf8.c | 9 +++++++++ src/util/util.h | 1 + 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/providers/simple/simple_access.c b/src/providers/simple/simple_access.c index 06662e9dfe3ffd13d8dd785545a836b7e519c8c3..e00079cd3685389f689cd21f59b15b8c847d620a 100644 --- a/src/providers/simple/simple_access.c +++ b/src/providers/simple/simple_access.c @@ -35,15 +35,6 @@ #define CONFDB_SIMPLE_ALLOW_GROUPS "simple_allow_groups" #define CONFDB_SIMPLE_DENY_GROUPS "simple_deny_groups" -static bool string_equal(bool cs, const char *s1, const char *s2) -{ - if (cs) { - return strcmp(s1, s2) == 0; - } - - return sss_utf8_case_eq((const uint8_t *)s1, (const uint8_t *)s2) == EOK; -} - errno_t simple_access_check(struct simple_ctx *ctx, const char *username, bool *access_granted) { @@ -68,7 +59,7 @@ errno_t simple_access_check(struct simple_ctx *ctx, const char *username, /* First, check whether the user is in the allowed users list */ if (ctx->allow_users != NULL) { for(i = 0; ctx->allow_users[i] != NULL; i++) { - if (string_equal(cs, username, ctx->allow_users[i])) { + if (sss_string_equal(cs, username, ctx->allow_users[i])) { DEBUG(9, ("User [%s] found in allow list, access granted.\n", username)); @@ -89,7 +80,7 @@ errno_t simple_access_check(struct simple_ctx *ctx, const char *username, /* Next check whether this user has been specifically denied */ if (ctx->deny_users != NULL) { for(i = 0; ctx->deny_users[i] != NULL; i++) { - if (string_equal(cs, username, ctx->deny_users[i])) { + if (sss_string_equal(cs, username, ctx->deny_users[i])) { DEBUG(9, ("User [%s] found in deny list, access denied.\n", username)); @@ -200,7 +191,7 @@ errno_t simple_access_check(struct simple_ctx *ctx, const char *username, matched = false; for (i = 0; ctx->allow_groups[i]; i++) { for(j = 0; groups[j]; j++) { - if (string_equal(cs, groups[j], ctx->allow_groups[i])) { + if (sss_string_equal(cs, groups[j], ctx->allow_groups[i])) { matched = true; break; } @@ -221,7 +212,7 @@ errno_t simple_access_check(struct simple_ctx *ctx, const char *username, matched = false; for (i = 0; ctx->deny_groups[i]; i++) { for(j = 0; groups[j]; j++) { - if (string_equal(cs, groups[j], ctx->deny_groups[i])) { + if (sss_string_equal(cs, groups[j], ctx->deny_groups[i])) { matched = true; break; } diff --git a/src/util/sss_utf8.c b/src/util/sss_utf8.c index 7997a6df4454ef2ec7e5469e244bb5e1c444b1ba..27c5cb60ad5db56a8d92a57bddacf28d7fab21ea 100644 --- a/src/util/sss_utf8.c +++ b/src/util/sss_utf8.c @@ -171,3 +171,12 @@ errno_t sss_utf8_case_eq(const uint8_t *s1, const uint8_t *s2) #else #error No unicode library #endif + +bool sss_string_equal(bool cs, const char *s1, const char *s2) +{ + if (cs) { + return strcmp(s1, s2) == 0; + } + + return sss_utf8_case_eq((const uint8_t *)s1, (const uint8_t *)s2) == EOK; +} diff --git a/src/util/util.h b/src/util/util.h index 7eb62a9b94b9d6891ea51fd5b995804527c8030e..985c7898182c5e58ca79e049f99f37d724009cf1 100644 --- a/src/util/util.h +++ b/src/util/util.h @@ -516,6 +516,7 @@ char * sss_tc_utf8_str_tolower(TALLOC_CTX *mem_ctx, const char *s); uint8_t * sss_tc_utf8_tolower(TALLOC_CTX *mem_ctx, const uint8_t *s, size_t len, size_t *_nlen); +bool sss_string_equal(bool cs, const char *s1, const char *s2); /* len includes terminating '\0' */ struct sized_string { -- 1.7.7.6