aboutsummaryrefslogtreecommitdiff
path: root/sshfs.c
diff options
context:
space:
mode:
authorDominique Martinet <asmadeus@codewreck.org>2019-11-30 12:42:40 +0100
committerNikolaus Rath <Nikolaus@rath.org>2019-11-30 11:42:40 +0000
commit8340a67b31112a32469cca0e0a94f965d4200021 (patch)
tree79085cd8ac59975076d254aae74e622d89c30908 /sshfs.c
parentab0e339e80bef649b13fddd6a3c0fc7a2d5b5df3 (diff)
downloadsshfs-8340a67b31112a32469cca0e0a94f965d4200021.tar
sshfs-8340a67b31112a32469cca0e0a94f965d4200021.tar.gz
sshfs-8340a67b31112a32469cca0e0a94f965d4200021.tar.bz2
sshfs-8340a67b31112a32469cca0e0a94f965d4200021.zip
sftp_init_reply_ok: fix small memory leak (#198)
The leak was identified with ASAN: configure the project with meson -Db_sanitize=address to reproduce.
Diffstat (limited to 'sshfs.c')
-rw-r--r--sshfs.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/sshfs.c b/sshfs.c
index 8d12d07..b102dbd 100644
--- a/sshfs.c
+++ b/sshfs.c
@@ -1596,12 +1596,14 @@ static int sftp_init_reply_ok(struct conn *conn, struct buffer *buf,
}
do {
- char *ext;
- char *extdata;
+ char *ext = NULL;
+ char *extdata = NULL;
if (buf_get_string(&buf2, &ext) == -1 ||
buf_get_string(&buf2, &extdata) == -1) {
buf_free(&buf2);
+ free(ext);
+ free(extdata);
return -1;
}
@@ -1621,6 +1623,9 @@ static int sftp_init_reply_ok(struct conn *conn, struct buffer *buf,
if (strcmp(ext, SFTP_EXT_FSYNC) == 0 &&
strcmp(extdata, "1") == 0)
sshfs.ext_fsync = 1;
+
+ free(ext);
+ free(extdata);
} while (buf2.len < buf2.size);
buf_free(&buf2);
}