Use parent_dirname_talloc instead of parent_dirname in copy_internals
authorVolker Lendecke <vl@samba.org>
Wed, 24 Dec 2008 12:44:44 +0000 (13:44 +0100)
committerVolker Lendecke <vl@samba.org>
Wed, 31 Dec 2008 18:33:25 +0000 (19:33 +0100)
source3/smbd/nttrans.c

index 24a14a8c1b8f1f363fcc3804fdbba90915e05fe6..c9874f6a48139ac134c03cdb69590fe68ee72ff2 100644 (file)
@@ -1127,6 +1127,7 @@ static NTSTATUS copy_internals(TALLOC_CTX *ctx,
        int info;
        SMB_OFF_T ret=-1;
        NTSTATUS status = NT_STATUS_OK;
+       char *parent;
 
        ZERO_STRUCT(sbuf1);
        ZERO_STRUCT(sbuf2);
@@ -1255,8 +1256,11 @@ static NTSTATUS copy_internals(TALLOC_CTX *ctx,
        /* Grrr. We have to do this as open_file_ntcreate adds aARCH when it
           creates the file. This isn't the correct thing to do in the copy
           case. JRA */
-       file_set_dosmode(conn, newname, fattr, &sbuf2,
-                        parent_dirname(newname),false);
+       if (!parent_dirname_talloc(talloc_tos(), newname, &parent, NULL)) {
+               return NT_STATUS_NO_MEMORY;
+       }
+       file_set_dosmode(conn, newname, fattr, &sbuf2, parent, false);
+       TALLOC_FREE(parent);
 
        if (ret < (SMB_OFF_T)sbuf1.st_size) {
                return NT_STATUS_DISK_FULL;