>From 97f4a26ca92300732b1ba7c1d7f501d28a862051 Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik Date: Fri, 28 Aug 2015 07:07:40 +0200 Subject: [PATCH] NSS: Don't ignore backslash in usernames with ldap provider The regression was caused by changing default domain regex for ldap provider in ticket #2717 Resolves: https://fedorahosted.org/sssd/ticket/2772 --- src/responder/nss/nsssrv.c | 4 ++-- src/tests/cmocka/test_nss_srv.c | 4 ++-- src/util/usertools.c | 11 ++++++++++- src/util/util.h | 3 +++ 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/responder/nss/nsssrv.c b/src/responder/nss/nsssrv.c index 2b3bca892a5b9c483d1f6f099fd4a6493e9afcab..d8eff7968c4929663412aa56d08414689b921a22 100644 --- a/src/responder/nss/nsssrv.c +++ b/src/responder/nss/nsssrv.c @@ -552,9 +552,9 @@ int nss_process_init(TALLOC_CTX *mem_ctx, goto fail; } - ret = sss_names_init(nctx, nctx->rctx->cdb, NULL, &nctx->global_names); + ret = sss_ad_default_names_ctx(nctx, &nctx->global_names); if (ret != EOK) { - DEBUG(SSSDBG_CRIT_FAILURE, "sss_names_init failed.\n"); + DEBUG(SSSDBG_CRIT_FAILURE, "sss_ad_default_names_ctx failed.\n"); goto fail; } diff --git a/src/tests/cmocka/test_nss_srv.c b/src/tests/cmocka/test_nss_srv.c index 2d4fb2204544a2b371f389545a461f3d526f2c0a..eb273b2263fa02294caf826181c7dcb03b6e2149 100644 --- a/src/tests/cmocka/test_nss_srv.c +++ b/src/tests/cmocka/test_nss_srv.c @@ -1045,8 +1045,8 @@ void test_nss_setup(struct sss_test_conf_param params[], nss_test_ctx->nctx = mock_nctx(nss_test_ctx); assert_non_null(nss_test_ctx->nctx); - ret = sss_names_init(nss_test_ctx->nctx, nss_test_ctx->tctx->confdb, - NULL, &nss_test_ctx->nctx->global_names); + ret = sss_ad_default_names_ctx(nss_test_ctx->nctx, + &nss_test_ctx->nctx->global_names); assert_int_equal(ret, EOK); assert_non_null(nss_test_ctx->nctx->global_names); diff --git a/src/util/usertools.c b/src/util/usertools.c index 87a8d7411312c3a80c32374a1fd93bbf0e767a91..ccbf7a0c8c2fb6d1d07afbfe46d978fc33093432 100644 --- a/src/util/usertools.c +++ b/src/util/usertools.c @@ -249,7 +249,8 @@ int sss_names_init(TALLOC_CTX *mem_ctx, struct confdb_ctx *cdb, } if (!re_pattern) { - re_pattern = talloc_strdup(tmpctx, IPA_AD_DEFAULT_RE); + re_pattern = talloc_strdup(tmpctx, + "(?P[^@]+)@?(?P[^@]*$)"); if (!re_pattern) { ret = ENOMEM; goto done; @@ -294,6 +295,14 @@ done: return ret; } +int sss_ad_default_names_ctx(TALLOC_CTX *mem_ctx, + struct sss_names_ctx **_out) +{ + return sss_names_init_from_args(mem_ctx, IPA_AD_DEFAULT_RE, + CONFDB_DEFAULT_FULL_NAME_FORMAT, + _out); +} + int sss_parse_name(TALLOC_CTX *memctx, struct sss_names_ctx *snctx, const char *orig, char **_domain, char **_name) diff --git a/src/util/util.h b/src/util/util.h index e20501cbbdf04da41f9199696b848e6705294610..3e29e748768fc2cac547d16d61b449f1b555a56f 100644 --- a/src/util/util.h +++ b/src/util/util.h @@ -299,6 +299,9 @@ int sss_names_init(TALLOC_CTX *mem_ctx, const char *domain, struct sss_names_ctx **out); +int sss_ad_default_names_ctx(TALLOC_CTX *mem_ctx, + struct sss_names_ctx **_out); + int sss_parse_name(TALLOC_CTX *memctx, struct sss_names_ctx *snctx, const char *orig, char **_domain, char **_name); -- 2.5.0