summaryrefslogtreecommitdiff
path: root/crypto/openssh/sftp-int.c
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/openssh/sftp-int.c')
-rw-r--r--crypto/openssh/sftp-int.c9
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);