diff options
| author | Wojciech Nizinski <w.nizinski at grinn-global.com> | 2015-10-20 14:08:09 +0200 | 
|---|---|---|
| committer | Waldemar Brodkorb <wbx@openadk.org> | 2015-12-17 20:35:20 +0100 | 
| commit | 5178df3e156a436c4888a1a95996aea55525e7b6 (patch) | |
| tree | 91e85c6f73506dafa3c7a399ff9406e8a4c04b88 /libc | |
| parent | 3aabb58d126445092dca953223c1730d975491dc (diff) | |
libc/stdlib: canonicalize_file_name() memory leak
Uclibc's canonicalize_file_name() is allocating temprary buffer of 4kB
(PATH_MAX), and passing it to realpath() as second argument. Function is
not checking if realpath() fails and memory is lost.
Diffstat (limited to 'libc')
| -rw-r--r-- | libc/stdlib/canonicalize.c | 21 | 
1 files changed, 1 insertions, 20 deletions
diff --git a/libc/stdlib/canonicalize.c b/libc/stdlib/canonicalize.c index 06e710ab7..da09d5841 100644 --- a/libc/stdlib/canonicalize.c +++ b/libc/stdlib/canonicalize.c @@ -9,30 +9,11 @@   */  #include <stdlib.h> -#include <limits.h>  #ifdef __USE_GNU -#ifndef PATH_MAX -# ifdef _POSIX_VERSION -#  define PATH_MAX _POSIX_PATH_MAX -# else -#  ifdef MAXPATHLEN -#   define PATH_MAX MAXPATHLEN -#  else -#   define PATH_MAX 1024 -#  endif -# endif -#endif -  char * canonicalize_file_name (const char *name)  { -	char *buf = (char *) malloc(PATH_MAX); - -	if(unlikely(buf == NULL)) -		return NULL; - -	*buf='\0'; -	return realpath (name, buf); +	return realpath (name, NULL);  }  #endif  | 
