summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Friedl <markus@cvs.openbsd.org>2004-11-25 22:22:15 +0000
committerMarkus Friedl <markus@cvs.openbsd.org>2004-11-25 22:22:15 +0000
commitae6bacd0fee6a83a03a7269262e4c494ae0d65e6 (patch)
tree6bec1671876af180b1cf40934bd07a897162a322
parent0a7411938c33d382f06a1eea4e8dfd9db7891723 (diff)
leak; from mpech
-rw-r--r--usr.bin/ssh/sftp-client.c4
-rw-r--r--usr.bin/ssh/sftp.c7
2 files changed, 8 insertions, 3 deletions
diff --git a/usr.bin/ssh/sftp-client.c b/usr.bin/ssh/sftp-client.c
index 57f30e6217f..261c2e9a737 100644
--- a/usr.bin/ssh/sftp-client.c
+++ b/usr.bin/ssh/sftp-client.c
@@ -20,7 +20,7 @@
/* XXX: copy between two remote sites */
#include "includes.h"
-RCSID("$OpenBSD: sftp-client.c,v 1.51 2004/07/11 17:48:47 deraadt Exp $");
+RCSID("$OpenBSD: sftp-client.c,v 1.52 2004/11/25 22:22:14 markus Exp $");
#include <sys/queue.h>
@@ -172,6 +172,7 @@ get_handle(int fd, u_int expected_id, u_int *len)
int status = buffer_get_int(&msg);
error("Couldn't get handle: %s", fx2txt(status));
+ buffer_free(&msg);
return(NULL);
} else if (type != SSH2_FXP_HANDLE)
fatal("Expected SSH2_FXP_HANDLE(%u) packet, got %u",
@@ -206,6 +207,7 @@ get_decode_stat(int fd, u_int expected_id, int quiet)
debug("Couldn't stat remote file: %s", fx2txt(status));
else
error("Couldn't stat remote file: %s", fx2txt(status));
+ buffer_free(&msg);
return(NULL);
} else if (type != SSH2_FXP_ATTRS) {
fatal("Expected SSH2_FXP_ATTRS(%u) packet, got %u",
diff --git a/usr.bin/ssh/sftp.c b/usr.bin/ssh/sftp.c
index 959931cf131..70b8963f767 100644
--- a/usr.bin/ssh/sftp.c
+++ b/usr.bin/ssh/sftp.c
@@ -16,7 +16,7 @@
#include "includes.h"
-RCSID("$OpenBSD: sftp.c,v 1.57 2004/11/05 12:19:56 djm Exp $");
+RCSID("$OpenBSD: sftp.c,v 1.58 2004/11/25 22:22:14 markus Exp $");
#include <glob.h>
#include <histedit.h>
@@ -1256,8 +1256,11 @@ interactive_loop(int fd_in, int fd_out, char *file1, char *file2)
if (remote_is_dir(conn, dir) && file2 == NULL) {
printf("Changing to: %s\n", dir);
snprintf(cmd, sizeof cmd, "cd \"%s\"", dir);
- if (parse_dispatch_command(conn, cmd, &pwd, 1) != 0)
+ if (parse_dispatch_command(conn, cmd, &pwd, 1) != 0) {
+ xfree(dir);
+ xfree(pwd);
return (-1);
+ }
} else {
if (file2 == NULL)
snprintf(cmd, sizeof cmd, "get %s", dir);