summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormarkus <markus@openbsd.org>2011-09-12 08:46:15 +0000
committermarkus <markus@openbsd.org>2011-09-12 08:46:15 +0000
commit9367d9f29e38d13bf1a76cac57ab89656a1281dc (patch)
tree4bb70c59f6d8a9e4174646fc7d2b443a839dab5b
parentremove unused header (diff)
downloadwireguard-openbsd-9367d9f29e38d13bf1a76cac57ab89656a1281dc.tar.xz
wireguard-openbsd-9367d9f29e38d13bf1a76cac57ab89656a1281dc.zip
fix leak in do_lsreaddir(); ok djm
-rw-r--r--usr.bin/ssh/sftp-client.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/usr.bin/ssh/sftp-client.c b/usr.bin/ssh/sftp-client.c
index ff9f29c27c5..6f18e009974 100644
--- a/usr.bin/ssh/sftp-client.c
+++ b/usr.bin/ssh/sftp-client.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sftp-client.c,v 1.95 2011/09/11 16:07:26 markus Exp $ */
+/* $OpenBSD: sftp-client.c,v 1.96 2011/09/12 08:46:15 markus Exp $ */
/*
* Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org>
*
@@ -455,12 +455,12 @@ do_lsreaddir(struct sftp_conn *conn, char *path, int printflag,
buffer_put_cstring(&msg, path);
send_msg(conn, &msg);
- buffer_clear(&msg);
-
handle = get_handle(conn, id, &handle_len,
"remote readdir(\"%s\")", path);
- if (handle == NULL)
+ if (handle == NULL) {
+ buffer_free(&msg);
return -1;
+ }
if (dir) {
ents = 0;
@@ -503,6 +503,7 @@ do_lsreaddir(struct sftp_conn *conn, char *path, int printflag,
fx2txt(status));
do_close(conn, handle, handle_len);
xfree(handle);
+ buffer_free(&msg);
return(status);
}
} else if (type != SSH2_FXP_NAME)