From a983272f1afa8dbae3ecd4425b04649601732a71 Mon Sep 17 00:00:00 2001 From: Sumit Bose Date: Thu, 2 Oct 2014 18:10:39 +0200 Subject: sid2name: return name without views applied MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Make sure that the original name of an object without any overrides applied is returned by sid2name requests. Reviewed-by: Pavel Březina --- src/responder/nss/nsssrv_cmd.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'src/responder/nss') diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c index bf0f25275..3def57fd0 100644 --- a/src/responder/nss/nsssrv_cmd.c +++ b/src/responder/nss/nsssrv_cmd.c @@ -4615,11 +4615,12 @@ static errno_t fill_orig(struct sss_packet *packet, static errno_t fill_name(struct sss_packet *packet, struct sss_domain_info *dom, enum sss_id_type id_type, + bool apply_no_view, struct ldb_message *msg) { int ret; TALLOC_CTX *tmp_ctx = NULL; - const char *orig_name; + const char *orig_name = NULL; const char *cased_name; const char *fq_name; struct sized_string name; @@ -4628,7 +4629,25 @@ static errno_t fill_name(struct sss_packet *packet, size_t blen; size_t pctr = 0; - orig_name = ldb_msg_find_attr_as_string(msg, SYSDB_NAME, NULL); + if (apply_no_view) { + orig_name = ldb_msg_find_attr_as_string(msg, + ORIGINALAD_PREFIX SYSDB_NAME, + NULL); + } else { + if (DOM_HAS_VIEWS(dom)) { + orig_name = ldb_msg_find_attr_as_string(msg, + OVERRIDE_PREFIX SYSDB_NAME, + NULL); + if (orig_name != NULL && IS_SUBDOMAIN(dom)) { + /* Override names are un-qualified */ + add_domain = true; + } + } + } + + if (orig_name == NULL) { + orig_name = ldb_msg_find_attr_as_string(msg, SYSDB_NAME, NULL); + } if (orig_name == NULL) { DEBUG(SSSDBG_CRIT_FAILURE, "Missing name.\n"); return EINVAL; @@ -4747,6 +4766,7 @@ static errno_t nss_cmd_getbysid_send_reply(struct nss_dom_ctx *dctx) ret = fill_name(cctx->creq->out, dctx->domain, id_type, + true, dctx->res->msgs[0]); break; case SSS_NSS_GETIDBYSID: -- cgit