idmap: Fix CID 1363261 Resource leak
authorVolker Lendecke <vl@samba.org>
Fri, 6 Apr 2018 09:04:24 +0000 (11:04 +0200)
committerJeremy Allison <jra@samba.org>
Sat, 7 Apr 2018 00:11:20 +0000 (02:11 +0200)
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/winbindd/idmap_ad_nss.c

index 8e960b8a21e6934b0f58eb04e3289ec606787e2d..0fd2b51e15695f11cee8f34b1a700cf02e806c70 100644 (file)
@@ -290,7 +290,7 @@ static NTSTATUS nss_ad_map_from_alias( TALLOC_CTX *mem_ctx,
        LDAPMessage *msg = NULL;
        ADS_STATUS ads_status = ADS_ERROR_NT(NT_STATUS_UNSUCCESSFUL);
        NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL;
-       char *username;
+       char *username = NULL;
        struct idmap_domain *dom;
        struct idmap_ad_context *ctx = NULL;
 
@@ -339,7 +339,8 @@ static NTSTATUS nss_ad_map_from_alias( TALLOC_CTX *mem_ctx,
        username = ads_pull_string(ctx->ads, mem_ctx, msg,
                                   "sAMAccountName");
        if (!username) {
-               return NT_STATUS_OBJECT_NAME_NOT_FOUND;
+               nt_status = NT_STATUS_OBJECT_NAME_NOT_FOUND;
+               goto done;
        }
 
        *name = talloc_asprintf(mem_ctx, "%s\\%s",
@@ -353,6 +354,7 @@ static NTSTATUS nss_ad_map_from_alias( TALLOC_CTX *mem_ctx,
        nt_status = NT_STATUS_OK;
 
 done:
+       TALLOC_FREE(username);
        TALLOC_FREE(filter);
        if (msg) {
                ads_msgfree(ctx->ads, msg);