diff options
author | David Howells <dhowells@redhat.com> | 2014-01-15 15:07:05 +0000 |
---|---|---|
committer | David Howells <dhowells@redhat.com> | 2014-01-15 15:07:05 +0000 |
commit | 491cdcaefc3a689e9f5c256373fef9dfd2c4c145 (patch) | |
tree | e18d445cc5b736ca8ff1c620b9d9be704d462114 | |
parent | 7963a21a183ccc5658acff3a1bf05ec3b0688946 (diff) | |
download | keyutils-491cdcaefc3a689e9f5c256373fef9dfd2c4c145.tar.gz |
Lib: Fix error-path memory leaks
Fix some memory leaks in error paths where a previously allocated buffer is
not freed if we get an error.
Signed-off-by: David Howells <dhowells@redhat.com>
-rw-r--r-- | keyutils.c | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -256,8 +256,10 @@ int keyctl_describe_alloc(key_serial_t id, char **_buffer) for (;;) { ret = keyctl_describe(id, buf, buflen); - if (ret < 0) + if (ret < 0) { + free(buf); return -1; + } if (buflen >= ret) break; @@ -295,8 +297,10 @@ int keyctl_read_alloc(key_serial_t id, void **_buffer) for (;;) { ret = keyctl_read(id, buf, buflen); - if (ret < 0) + if (ret < 0) { + free(buf); return -1; + } if (buflen >= ret) break; @@ -335,8 +339,10 @@ int keyctl_get_security_alloc(key_serial_t id, char **_buffer) for (;;) { ret = keyctl_get_security(id, buf, buflen); - if (ret < 0) + if (ret < 0) { + free(buf); return -1; + } if (buflen >= ret) break; |