| Patch vampirised from Debian's packaging of keyutils-1.4 |
| |
| Author: Michael Gebetsroither <gebi@grml.org> |
| Description: Fixed memleak from realloc (Closes: #496466). |
| |
| diff -Naurp keyutils.orig/keyutils.c keyutils/keyutils.c |
| --- keyutils.orig/keyutils.c 2008-08-09 21:46:52.000000000 +0200 |
| +++ keyutils/keyutils.c 2008-08-25 13:38:07.000000000 +0200 |
| @@ -165,6 +165,24 @@ long keyctl_assume_authority(key_serial_ |
| return keyctl(KEYCTL_ASSUME_AUTHORITY, id); |
| } |
| |
| + |
| +/*****************************************************************************/ |
| +/* |
| + * plain realloc is just crazy |
| + */ |
| +static void* __xrealloc(void* ptr, size_t size) |
| +{ |
| + void* ret; |
| + |
| + ret = realloc(ptr, size); |
| + if(!ret) { |
| + free(ptr); |
| + return 0; |
| + } |
| + return ret; |
| +} |
| + |
| + |
| /*****************************************************************************/ |
| /* |
| * fetch key description into an allocated buffer |
| @@ -194,7 +212,7 @@ int keyctl_describe_alloc(key_serial_t i |
| break; |
| |
| buflen = ret; |
| - buf = realloc(buf, buflen); |
| + buf = __xrealloc(buf, buflen); |
| if (!buf) |
| return -1; |
| } |
| @@ -233,7 +251,7 @@ int keyctl_read_alloc(key_serial_t id, v |
| break; |
| |
| buflen = ret; |
| - buf = realloc(buf, buflen + 1); |
| + buf = __xrealloc(buf, buflen + 1); |
| if (!buf) |
| return -1; |
| } |