r6706: * fix bug that prevented smbclient from creating directories
authorGerald Carter <jerry@samba.org>
Tue, 10 May 2005 12:21:02 +0000 (12:21 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 15:56:52 +0000 (10:56 -0500)
  on non-dfs paths
* add patch from James Peach to remove use of uninitialized
  variables

source/libsmb/clidfs.c
source/utils/net_groupmap.c

index 6d1e5974105ce05714ba0ef9b2df83978bdf204b..30c8701619574e00d7a5004573f6fcbf450488c7 100644 (file)
@@ -464,7 +464,7 @@ BOOL cli_dfs_make_full_path( pstring path, const char *server, const char *share
  check for dfs referral
 ********************************************************************/
 
-static BOOL cli_dfs_check_error( struct cli_state *cli )
+static BOOL cli_dfs_check_error( struct cli_state *cli, NTSTATUS status )
 {
        uint32 flgs2 = SVAL(cli->inbuf,smb_flg2);
 
@@ -473,7 +473,7 @@ static BOOL cli_dfs_check_error( struct cli_state *cli )
        if ( !( (flgs2&FLAGS2_32_BIT_ERROR_CODES) && (flgs2&FLAGS2_UNICODE_STRINGS) ) )
                return False;
 
-       if ( NT_STATUS_EQUAL( NT_STATUS_PATH_NOT_COVERED, NT_STATUS(IVAL(cli->inbuf,smb_rcls)) ) )
+       if ( NT_STATUS_EQUAL( status, NT_STATUS(IVAL(cli->inbuf,smb_rcls)) ) )
                return True;
 
        return False;
@@ -605,9 +605,17 @@ BOOL cli_resolve_path( const char *mountpt, struct cli_state *rootcli, const cha
                return True;
        }
 
+       /* special case where client asked for a path that does not exist */
+
+       if ( cli_dfs_check_error(rootcli, NT_STATUS_OBJECT_NAME_NOT_FOUND) ) {
+               *targetcli = rootcli;
+               pstrcpy( targetpath, path );
+               return True;
+       }
+
        /* we got an error, check for DFS referral */
                        
-       if ( !cli_dfs_check_error(rootcli) ) 
+       if ( !cli_dfs_check_error(rootcli, NT_STATUS_PATH_NOT_COVERED) ) 
                return False;
 
        /* check for the referral */
index b20a37c7267dd866dcba426edc19f33c5416707c..9aae620f6e5661eab8c660513da838d204dd8798 100644 (file)
@@ -670,7 +670,6 @@ static int net_groupmap_listmem(int argc, const char **argv)
        DOM_SID alias;
        DOM_SID *members;
        int i, num;
-       NTSTATUS result;
 
        if ( (argc != 1) || 
             !string_to_sid(&alias, argv[0]) ) {
@@ -679,8 +678,7 @@ static int net_groupmap_listmem(int argc, const char **argv)
        }
 
        if (!pdb_enum_aliasmem(&alias, &members, &num)) {
-               d_printf("Could not list members for sid %s: %s\n",
-                        argv[0], nt_errstr(result));
+               d_printf("Could not list members for sid %s\n", argv[0]);
                return -1;
        }