s3: Directly use *p_access_mask in smbd_calculate_maximum_allowed_access
authorVolker Lendecke <vl@samba.org>
Fri, 16 Dec 2011 17:45:14 +0000 (18:45 +0100)
committerVolker Lendecke <vl@samba.org>
Tue, 3 Jan 2012 12:38:01 +0000 (13:38 +0100)
source3/smbd/open.c

index 818dceb05007bc9d4fa83e729b74b78e80ff161e..6d7b634bbb041602fec03c1b781d0f264e8e88ae 100644 (file)
@@ -1482,11 +1482,10 @@ static NTSTATUS smbd_calculate_maximum_allowed_access(
        bool file_existed,
        uint32_t *p_access_mask)
 {
-       uint32_t access_mask = *p_access_mask;
        NTSTATUS status;
 
        if (get_current_uid(conn) == (uid_t)0) {
-               access_mask |= FILE_GENERIC_ALL;
+               *p_access_mask |= FILE_GENERIC_ALL;
        } else if (file_existed) {
                struct security_descriptor *sd;
                uint32_t access_granted = 0;
@@ -1510,7 +1509,7 @@ static NTSTATUS smbd_calculate_maximum_allowed_access(
                 */
                status = se_access_check(sd,
                                         get_current_nttok(conn),
-                                        (access_mask & ~FILE_READ_ATTRIBUTES),
+                                        (*p_access_mask & ~FILE_READ_ATTRIBUTES),
                                         &access_granted);
 
                TALLOC_FREE(sd);
@@ -1523,11 +1522,10 @@ static NTSTATUS smbd_calculate_maximum_allowed_access(
                        return NT_STATUS_ACCESS_DENIED;
                }
 
-               access_mask = (access_granted | FILE_READ_ATTRIBUTES);
+               *p_access_mask = (access_granted | FILE_READ_ATTRIBUTES);
        } else {
-               access_mask = FILE_GENERIC_ALL;
+               *p_access_mask = FILE_GENERIC_ALL;
        }
-       *p_access_mask = access_mask;
        return NT_STATUS_OK;
 }