Bug 7551: Return error of cli_push when 'put - /some/file' is used.
[samba.git] / source3 / client / client.c
index a46247060f5e8cca607aa12a22ba3b49444e7e89..0e8b9c11a82d1236ecb27c5fad3eeb0b2171cb3b 100644 (file)
@@ -1668,6 +1668,7 @@ static int do_put(const char *rname, const char *lname, bool reput)
                          &state);
        if (!NT_STATUS_IS_OK(status)) {
                d_fprintf(stderr, "cli_push returned %s\n", nt_errstr(status));
+               rc = 1;
        }
 
        if (!NT_STATUS_IS_OK(cli_close(targetcli, fnum))) {
@@ -1745,7 +1746,7 @@ static int cmd_put(void)
                SMB_STRUCT_STAT st;
                /* allow '-' to represent stdin
                   jdblair, 24.jun.98 */
-               if (!file_exist_stat(lname,&st) &&
+               if (!file_exist_stat(lname, &st, false) &&
                    (strcmp(lname,"-"))) {
                        d_printf("%s does not exist\n",lname);
                        return 1;
@@ -3436,7 +3437,7 @@ static int cmd_newer(void)
        SMB_STRUCT_STAT sbuf;
 
        ok = next_token_talloc(ctx, &cmd_ptr,&buf,NULL);
-       if (ok && (sys_stat(buf,&sbuf) == 0)) {
+       if (ok && (sys_stat(buf, &sbuf, false) == 0)) {
                newer_than = convert_timespec_to_time_t(sbuf.st_ex_mtime);
                DEBUG(1,("Getting files newer than %s",
                         time_to_asc(newer_than)));
@@ -3615,7 +3616,7 @@ static int cmd_reput(void)
                return 1;
        }
 
-       if (!file_exist_stat(local_name, &st)) {
+       if (!file_exist_stat(local_name, &st, false)) {
                d_printf("%s does not exist\n", local_name);
                return 1;
        }
@@ -4420,8 +4421,10 @@ static void readline_callback(void)
 
  again:
 
-       if (cli->fd == -1)
+       if (cli->fd < 0 || cli->fd >= FD_SETSIZE) {
+               errno = EBADF;
                return;
+       }
 
        FD_ZERO(&fds);
        FD_SET(cli->fd,&fds);