r21214: fixed a valgrind error that can be caused by a semi-async call inside
authorAndrew Tridgell <tridge@samba.org>
Wed, 7 Feb 2007 07:06:28 +0000 (07:06 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:44:47 +0000 (14:44 -0500)
a nested ntvfs call. The req structure can go away while processing a
ntvfs request
(This used to be commit f62b3c505f71f37a86a76d152d643926e19eb148)

source4/ntvfs/unixuid/vfs_unixuid.c

index 17fdb42de03a1fec6e0af65a6d6d521ef593581a..b430d3048b8db22074fddd89e38ac2688e3a79f4 100644 (file)
@@ -156,7 +156,7 @@ static NTSTATUS unixuid_setup_security(struct ntvfs_module_context *ntvfs,
 
        token = req->session_info->security_token;
 
-       *sec = save_unix_security(req);
+       *sec = save_unix_security(ntvfs);
        if (*sec == NULL) {
                return NT_STATUS_NO_MEMORY;
        }
@@ -166,6 +166,7 @@ static NTSTATUS unixuid_setup_security(struct ntvfs_module_context *ntvfs,
        } else {
                status = nt_token_to_unix_security(ntvfs, req, token, &newsec);
                if (!NT_STATUS_IS_OK(status)) {
+                       talloc_free(*sec);
                        return status;
                }
                if (private->last_sec_ctx) {
@@ -178,6 +179,7 @@ static NTSTATUS unixuid_setup_security(struct ntvfs_module_context *ntvfs,
 
        status = set_unix_security(newsec);
        if (!NT_STATUS_IS_OK(status)) {
+               talloc_free(*sec);
                return status;
        }
 
@@ -194,6 +196,7 @@ static NTSTATUS unixuid_setup_security(struct ntvfs_module_context *ntvfs,
        NT_STATUS_NOT_OK_RETURN(status); \
        status = ntvfs_next_##op args; \
        status2 = set_unix_security(sec); \
+       talloc_free(sec); \
        if (!NT_STATUS_IS_OK(status2)) smb_panic("Unable to reset security context"); \
 } while (0)