aboutsummaryrefslogtreecommitdiff
path: root/src/misc.c
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:12:13 +0200
commit61d032fc03e0055c859931f466bc75fbdf36385a (patch)
treef0ca22f78aa5fccf24aa5515e8bec5cd2e931e33 /src/misc.c
parentdc8103925c2efc8bc321c092c8eb8d453081c69d (diff)
downloadlibssh-61d032fc03e0055c859931f466bc75fbdf36385a.tar.gz
libssh-61d032fc03e0055c859931f466bc75fbdf36385a.tar.xz
libssh-61d032fc03e0055c859931f466bc75fbdf36385a.zip
misc: Don't leak memory on ssh_path_expand_escape() on error.
Diffstat (limited to 'src/misc.c')
-rw-r--r--src/misc.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/misc.c b/src/misc.c
index 32884e62..adb0a455 100644
--- a/src/misc.c
+++ b/src/misc.c
@@ -758,11 +758,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;
}
@@ -770,6 +772,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);