diff options
Diffstat (limited to 'src/responder/nss/nsssrv_cmd.c')
-rw-r--r-- | src/responder/nss/nsssrv_cmd.c | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c index 4c0e9414d..70da3924f 100644 --- a/src/responder/nss/nsssrv_cmd.c +++ b/src/responder/nss/nsssrv_cmd.c @@ -948,7 +948,10 @@ static int nss_cmd_getpwnam_search(struct nss_dom_ctx *dctx) if (cmdctx->name_is_upn) { extra_flag = EXTRA_NAME_IS_UPN; - } else if (DOM_HAS_VIEWS(dom) && dctx->res->count == 0) { + } else if (DOM_HAS_VIEWS(dom) && (dctx->res->count == 0 + || ldb_msg_find_attr_as_string(dctx->res->msgs[0], + OVERRIDE_PREFIX SYSDB_NAME, + NULL) != NULL)) { extra_flag = EXTRA_INPUT_MAYBE_WITH_VIEW; } else { extra_flag = NULL; @@ -1608,7 +1611,10 @@ static int nss_cmd_getpwuid_search(struct nss_dom_ctx *dctx) * yet) then verify that the cache is uptodate */ if (dctx->check_provider) { - if (DOM_HAS_VIEWS(dom) && dctx->res->count == 0) { + if (DOM_HAS_VIEWS(dom) && (dctx->res->count == 0 + || ldb_msg_find_attr_as_uint64(dctx->res->msgs[0], + OVERRIDE_PREFIX SYSDB_UIDNUM, + 0) != 0)) { extra_flag = EXTRA_INPUT_MAYBE_WITH_VIEW; } else { extra_flag = NULL; @@ -3049,7 +3055,10 @@ static int nss_cmd_getgrnam_search(struct nss_dom_ctx *dctx) * yet) then verify that the cache is uptodate */ if (dctx->check_provider) { - if (DOM_HAS_VIEWS(dom) && dctx->res->count == 0) { + if (DOM_HAS_VIEWS(dom) && (dctx->res->count == 0 + || ldb_msg_find_attr_as_string(dctx->res->msgs[0], + OVERRIDE_PREFIX SYSDB_NAME, + NULL) != NULL)) { extra_flag = EXTRA_INPUT_MAYBE_WITH_VIEW; } else { extra_flag = NULL; @@ -3173,7 +3182,10 @@ static int nss_cmd_getgrgid_search(struct nss_dom_ctx *dctx) * yet) then verify that the cache is uptodate */ if (dctx->check_provider) { - if (DOM_HAS_VIEWS(dom) && dctx->res->count == 0) { + if (DOM_HAS_VIEWS(dom) && (dctx->res->count == 0 + || ldb_msg_find_attr_as_uint64(dctx->res->msgs[0], + OVERRIDE_PREFIX SYSDB_GIDNUM, + 0) != 0)) { extra_flag = EXTRA_INPUT_MAYBE_WITH_VIEW; } else { extra_flag = NULL; @@ -4131,7 +4143,10 @@ static int nss_cmd_initgroups_search(struct nss_dom_ctx *dctx) if (cmdctx->name_is_upn) { extra_flag = EXTRA_NAME_IS_UPN; - } else if (DOM_HAS_VIEWS(dom) && dctx->res->count == 0) { + } else if (DOM_HAS_VIEWS(dom) && (dctx->res->count == 0 + || ldb_msg_find_attr_as_string(dctx->res->msgs[0], + OVERRIDE_PREFIX SYSDB_NAME, + NULL) != NULL)) { extra_flag = EXTRA_INPUT_MAYBE_WITH_VIEW; } else { extra_flag = NULL; |