summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2014-01-15 15:07:05 +0000
committerDavid Howells <dhowells@redhat.com>2014-01-15 15:07:05 +0000
commit491cdcaefc3a689e9f5c256373fef9dfd2c4c145 (patch)
treee18d445cc5b736ca8ff1c620b9d9be704d462114
parent7963a21a183ccc5658acff3a1bf05ec3b0688946 (diff)
downloadkeyutils-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.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/keyutils.c b/keyutils.c
index 4c33b92..555df55 100644
--- a/keyutils.c
+++ b/keyutils.c
@@ -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;