diff options
Diffstat (limited to 'crypto/openssh/sftp-int.c')
-rw-r--r-- | crypto/openssh/sftp-int.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/crypto/openssh/sftp-int.c b/crypto/openssh/sftp-int.c index d986c76f7bda6..d4331419c9d0e 100644 --- a/crypto/openssh/sftp-int.c +++ b/crypto/openssh/sftp-int.c @@ -26,7 +26,7 @@ /* XXX: recursive operations */ #include "includes.h" -RCSID("$OpenBSD: sftp-int.c,v 1.44 2002/02/13 00:59:23 djm Exp $"); +RCSID("$OpenBSD: sftp-int.c,v 1.46 2002/03/30 18:51:15 markus Exp $"); #include <glob.h> @@ -178,8 +178,9 @@ local_do_shell(const char *args) strerror(errno)); _exit(1); } - if (waitpid(pid, &status, 0) == -1) - fatal("Couldn't wait for child: %s", strerror(errno)); + while (waitpid(pid, &status, 0) == -1) + if (errno != EINTR) + fatal("Couldn't wait for child: %s", strerror(errno)); if (!WIFEXITED(status)) error("Shell exited abormally"); else if (WEXITSTATUS(status)) @@ -888,8 +889,10 @@ interactive_loop(int fd_in, int fd_out, char *file1, char *file2) file2); parse_dispatch_command(conn, cmd, &pwd); + xfree(dir); return; } + xfree(dir); } setvbuf(stdout, NULL, _IOLBF, 0); setvbuf(infile, NULL, _IOLBF, 0); |