summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Schneider <asn@cryptomilk.org>2012-10-05 10:51:43 +0200
committerAndreas Schneider <asn@cryptomilk.org>2012-10-05 11:44:50 +0200
commit0d029e7038d074a064e2870ec35441403301d099 (patch)
tree0e9896698e12579c863327e35806a0f6260f60ff
parentaae725a44c4d037125faebf88a8c4dd430d1c179 (diff)
downloadlibssh-0d029e7038d074a064e2870ec35441403301d099.tar.gz
libssh-0d029e7038d074a064e2870ec35441403301d099.tar.xz
libssh-0d029e7038d074a064e2870ec35441403301d099.zip
misc: Don't leak memory on ssh_path_expand_escape() on error.
(cherry picked from commit 61d032fc03e0055c859931f466bc75fbdf36385a)
-rw-r--r--src/misc.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/misc.c b/src/misc.c
index a4c382b4..dd5298f8 100644
--- a/src/misc.c
+++ b/src/misc.c
@@ -760,11 +760,13 @@ char *ssh_path_expand_escape(ssh_session session, const char *s) {
default:
ssh_set_error(session, SSH_FATAL,
"Wrong escape sequence detected");
+ free(r);
return NULL;
}
if (x == NULL) {
ssh_set_error_oom(session);
+ free(r);
return NULL;
}
@@ -772,6 +774,8 @@ char *ssh_path_expand_escape(ssh_session session, const char *s) {
if (i > MAX_BUF_SIZE) {
ssh_set_error(session, SSH_FATAL,
"String too long");
+ free(x);
+ free(r);
return NULL;
}
l = strlen(buf);