Fix bug #7651 - mknod and mkfifo fails with "No such file or directory"
authorJeremy Allison <jra@samba.org>
Thu, 26 Aug 2010 23:46:45 +0000 (16:46 -0700)
committerJeremy Allison <jra@samba.org>
Thu, 26 Aug 2010 23:46:45 +0000 (16:46 -0700)
Ensure we check the correct stat struct once we've created the
special fix. Thanks to izh1979@gmail.com for pointing out the
bug.

Jeremy.

source3/smbd/trans2.c

index 24d66a61879fb3d1c1cec73f898d3b37172184bf..4ecf08a479e9db53a47662d1f686f85833053d92 100644 (file)
@@ -6799,6 +6799,7 @@ static NTSTATUS smb_set_file_unix_basic(connection_struct *conn,
        files_struct *all_fsps = NULL;
        bool modify_mtime = true;
        struct file_id id;
+       struct smb_filename *smb_fname_tmp = NULL;
        SMB_STRUCT_STAT sbuf;
 
        ZERO_STRUCT(ft);
@@ -6851,7 +6852,6 @@ static NTSTATUS smb_set_file_unix_basic(connection_struct *conn,
        sbuf = smb_fname->st;
 
        if (!VALID_STAT(sbuf)) {
-               struct smb_filename *smb_fname_tmp = NULL;
                /*
                 * The only valid use of this is to create character and block
                 * devices, and named pipes. This is deprecated (IMHO) and 
@@ -6880,7 +6880,7 @@ static NTSTATUS smb_set_file_unix_basic(connection_struct *conn,
                }
 
                sbuf = smb_fname_tmp->st;
-               TALLOC_FREE(smb_fname_tmp);
+               smb_fname = smb_fname_tmp;
 
                /* Ensure we don't try and change anything else. */
                raw_unixmode = SMB_MODE_NO_CHANGE;