Fix the erroneous masking of chmod requests via the UNIX extensions.
authorJeremy Allison <jra@samba.org>
Wed, 21 Aug 2013 19:03:25 +0000 (12:03 -0700)
committerJeremy Allison <jra@samba.org>
Sat, 24 Aug 2013 21:04:47 +0000 (14:04 -0700)
Signed-off-by: Jeremy Allison <jra@samba.org>
source3/smbd/trans2.c

index e7c0da1c20b3963042d669903a73c97828d38a97..bafd3f76dd29e3a9f66038d0ba00f978c7bcee92 100644 (file)
@@ -1392,20 +1392,15 @@ static NTSTATUS unix_perms_from_wire( connection_struct *conn,
        ret |= ((perms & UNIX_SET_UID ) ? S_ISUID : 0);
 #endif
 
-       switch (ptype) {
-       case PERM_NEW_FILE:
-       case PERM_EXISTING_FILE:
+       if (ptype == PERM_NEW_FILE) {
                /* Apply mode mask */
                ret &= lp_create_mask(SNUM(conn));
                /* Add in force bits */
                ret |= lp_force_create_mode(SNUM(conn));
-               break;
-       case PERM_NEW_DIR:
-       case PERM_EXISTING_DIR:
+       } else if (ptype == PERM_NEW_DIR) {
                ret &= lp_dir_mask(SNUM(conn));
                /* Add in force bits */
                ret |= lp_force_dir_mode(SNUM(conn));
-               break;
        }
 
        *ret_perms = ret;