smbd: use metadata_fsp() with SMB_VFS_FGET_NT_ACL()
[samba.git] / source3 / rpc_server / srvsvc / srv_srvsvc_nt.c
index 6d955269ab000160475dd5ed64072ff9f0da0e7d..2608e92db4bce7479008a86856d972eddc90820a 100644 (file)
 #include "dbwrap/dbwrap.h"
 #include "session.h"
 #include "../lib/util/util_pw.h"
+#include "locking/share_mode_lock.h"
 #include "smbd/smbd.h"
 #include "smbd/globals.h"
 #include "auth.h"
 #include "messages.h"
 #include "serverid.h"
+#include "lib/global_contexts.h"
+#include "source3/lib/substitute.h"
 
 extern const struct generic_mapping file_generic_mapping;
 
@@ -1956,6 +1959,8 @@ WERROR _srvsvc_NetShareSetInfo(struct pipes_struct *p,
 
                ret = smbrun(command, NULL, NULL);
                if (ret == 0) {
+                       reload_services(NULL, NULL, false);
+
                        /* Tell everyone we updated smb.conf. */
                        messaging_send_all(p->msg_ctx, MSG_SMB_CONF_UPDATED,
                                           NULL, 0);
@@ -2420,7 +2425,6 @@ WERROR _srvsvc_NetGetFileSecurity(struct pipes_struct *p,
                                        r->in.file,
                                        ucf_flags,
                                        0,
-                                       NULL,
                                        &smb_fname);
        if (!NT_STATUS_IS_OK(nt_status)) {
                werr = ntstatus_to_werror(nt_status);
@@ -2430,7 +2434,6 @@ WERROR _srvsvc_NetGetFileSecurity(struct pipes_struct *p,
        nt_status = SMB_VFS_CREATE_FILE(
                conn,                                   /* conn */
                NULL,                                   /* req */
-               &conn->cwd_fsp,                         /* dirfsp */
                smb_fname,                              /* fname */
                FILE_READ_ATTRIBUTES,                   /* access_mask */
                FILE_SHARE_READ|FILE_SHARE_WRITE,       /* share_access */
@@ -2460,7 +2463,7 @@ WERROR _srvsvc_NetGetFileSecurity(struct pipes_struct *p,
                goto error_exit;
        }
 
-       nt_status = SMB_VFS_FGET_NT_ACL(fsp,
+       nt_status = SMB_VFS_FGET_NT_ACL(metadata_fsp(fsp),
                                       (SECINFO_OWNER
                                        |SECINFO_GROUP
                                        |SECINFO_DACL), sd_buf, &sd_buf->sd);
@@ -2556,7 +2559,6 @@ WERROR _srvsvc_NetSetFileSecurity(struct pipes_struct *p,
                                        r->in.file,
                                        ucf_flags,
                                        0,
-                                       NULL,
                                        &smb_fname);
        if (!NT_STATUS_IS_OK(nt_status)) {
                werr = ntstatus_to_werror(nt_status);
@@ -2566,7 +2568,6 @@ WERROR _srvsvc_NetSetFileSecurity(struct pipes_struct *p,
        nt_status = SMB_VFS_CREATE_FILE(
                conn,                                   /* conn */
                NULL,                                   /* req */
-               &conn->cwd_fsp,                         /* dirfsp */
                smb_fname,                              /* fname */
                FILE_WRITE_ATTRIBUTES,                  /* access_mask */
                FILE_SHARE_READ|FILE_SHARE_WRITE,       /* share_access */