From cc7ebb3f14dca6d8fd053d8017aedb2b206e2457 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Fri, 15 Apr 2005 00:39:03 +0000 Subject: r6348: Fix for bug #2605 reported by Daniel Patterson . Ensure smbclient doesn't perform commands if the "chdir" fails in a scripted set. Jeremy. (This used to be commit 644608ea7db6d8d73a8c028a82cd0767ffe32af6) --- source3/client/client.c | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) (limited to 'source3') diff --git a/source3/client/client.c b/source3/client/client.c index 604bf0989a..be17488919 100644 --- a/source3/client/client.c +++ b/source3/client/client.c @@ -260,6 +260,7 @@ static int do_cd(char *newdir) struct cli_state *targetcli; SMB_STRUCT_STAT sbuf; uint32 attributes; + int ret = 1; dos_format(newdir); @@ -305,21 +306,23 @@ static int do_cd(char *newdir) pstrcpy(cur_dir,saved_dir); goto out; } - } - else { + } else { pstrcat( targetpath, "\\" ); dos_clean_name( targetpath ); if ( !cli_chkpath(targetcli, targetpath) ) { d_printf("cd %s: %s\n", dname, cli_errstr(targetcli)); pstrcpy(cur_dir,saved_dir); + goto out; } } + ret = 0; + out: + pstrcpy(cd_path,cur_dir); - - return 0; + return ret; } /**************************************************************************** @@ -3170,7 +3173,13 @@ static int process(char *base_directory) return 1; } - if (*base_directory) do_cd(base_directory); + if (*base_directory) { + rc = do_cd(base_directory); + if (rc) { + cli_cm_shutdown(); + return rc; + } + } if (cmdstr) { rc = process_command_string(cmdstr); @@ -3233,7 +3242,13 @@ static int do_tar_op(char *base_directory) recurse=True; - if (*base_directory) do_cd(base_directory); + if (*base_directory) { + ret = do_cd(base_directory); + if (ret) { + cli_cm_shutdown(); + return ret; + } + } ret=process_tar(); -- cgit