smbd: Add mem_ctx to {f,}get_nt_acl VFS call
[amitay/samba.git] / source3 / rpc_server / srvsvc / srv_srvsvc_nt.c
index 982b0b479b3fe6611e0de8967d050e7a01d2c79c..0249ef56610a9d634526b9380c108c9744f3c234 100644 (file)
@@ -2185,15 +2185,22 @@ WERROR _srvsvc_NetGetFileSecurity(struct pipes_struct *p,
                goto error_exit;
        }
 
+       sd_buf = talloc_zero(p->mem_ctx, struct sec_desc_buf);
+       if (!sd_buf) {
+               werr = WERR_NOMEM;
+               goto error_exit;
+       }
+
        nt_status = SMB_VFS_FGET_NT_ACL(fsp,
                                       (SECINFO_OWNER
                                        |SECINFO_GROUP
-                                       |SECINFO_DACL), &psd);
+                                       |SECINFO_DACL), sd_buf, &sd_buf->sd);
 
        if (!NT_STATUS_IS_OK(nt_status)) {
                DEBUG(3,("_srvsvc_NetGetFileSecurity: Unable to get NT ACL "
                        "for file %s\n", smb_fname_str_dbg(smb_fname)));
                werr = ntstatus_to_werror(nt_status);
+               TALLOC_FREE(sd_buf);
                goto error_exit;
        }
 
@@ -2203,14 +2210,7 @@ WERROR _srvsvc_NetGetFileSecurity(struct pipes_struct *p,
 
        sd_size = ndr_size_security_descriptor(psd, 0);
 
-       sd_buf = talloc_zero(p->mem_ctx, struct sec_desc_buf);
-       if (!sd_buf) {
-               werr = WERR_NOMEM;
-               goto error_exit;
-       }
-
        sd_buf->sd_size = sd_size;
-       sd_buf->sd = talloc_move(p->mem_ctx, &psd);
 
        *r->out.sd_buf = sd_buf;