s3:smbd: use smbd_calculate_access_mask() also for fake_files
authorStefan Metzmacher <metze@samba.org>
Sun, 10 Jul 2011 11:59:40 +0000 (13:59 +0200)
committerStefan Metzmacher <metze@samba.org>
Mon, 11 Jul 2011 19:33:29 +0000 (21:33 +0200)
metze

source3/smbd/fake_file.c

index 81f7686726b171a33654d47754596f8c98abea06..68967fb26837bbcfac402fc89cdaea8ae26d0222 100644 (file)
@@ -19,6 +19,7 @@
 
 #include "includes.h"
 #include "smbd/smbd.h"
+#include "smbd/globals.h"
 #include "fake_file.h"
 #include "auth.h"
 
@@ -128,6 +129,18 @@ NTSTATUS open_fake_file(struct smb_request *req, connection_struct *conn,
        files_struct *fsp = NULL;
        NTSTATUS status;
 
+       status = smbd_calculate_access_mask(conn, smb_fname,
+                                           false, /* fake files do not exist */
+                                           access_mask, &access_mask);
+       if (!NT_STATUS_IS_OK(status)) {
+               DEBUG(10, ("open_fake_file: smbd_calculate_access_mask "
+                       "on service[%s] file[%s] returned %s\n",
+                       lp_servicename(SNUM(conn)),
+                       smb_fname_str_dbg(smb_fname),
+                       nt_errstr(status)));
+               return status;
+       }
+
        /* access check */
        if (geteuid() != sec_initial_uid()) {
                DEBUG(3, ("open_fake_file_shared: access_denied to "