svn commit: r326636 - head/contrib/binutils/libiberty
Stephen J. Kiernan
stevek at FreeBSD.org
Wed Dec 6 21:18:46 UTC 2017
Author: stevek
Date: Wed Dec 6 21:18:45 2017
New Revision: 326636
URL: https://svnweb.freebsd.org/changeset/base/326636
Log:
The function make_relative_prefix_1 does not properly free locally
allocated memory when it returns early.
Free the memory associated with the variables full_programe, bin_dirs,
prog_dirs, and prefix_dirs when the function returns early.
Submitted by: Tom Rix <trix at juniper.net>
Reviewed by: jhibbits, emaste
Approved by: sjg (mentor)
Obtained from: Juniper Networks, Inc.
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D9691
Modified:
head/contrib/binutils/libiberty/make-relative-prefix.c
Modified: head/contrib/binutils/libiberty/make-relative-prefix.c
==============================================================================
--- head/contrib/binutils/libiberty/make-relative-prefix.c Wed Dec 6 21:12:24 2017 (r326635)
+++ head/contrib/binutils/libiberty/make-relative-prefix.c Wed Dec 6 21:18:45 2017 (r326636)
@@ -299,10 +299,18 @@ make_relative_prefix_1 (const char *progname, const ch
full_progname = strdup(progname);
prog_dirs = split_directories (full_progname, &prog_num);
- bin_dirs = split_directories (bin_prefix, &bin_num);
+ if (prog_dirs == NULL)
+ {
+ free (full_progname);
+ return NULL;
+ }
free (full_progname);
- if (bin_dirs == NULL || prog_dirs == NULL)
- return NULL;
+ bin_dirs = split_directories (bin_prefix, &bin_num);
+ if (bin_dirs == NULL)
+ {
+ free_split_directories(prog_dirs);
+ return NULL;
+ }
/* Remove the program name from comparison of directory names. */
prog_num--;
@@ -365,7 +373,12 @@ make_relative_prefix_1 (const char *progname, const ch
ret = (char *) malloc (needed_len);
if (ret == NULL)
- return NULL;
+ {
+ free_split_directories (prog_dirs);
+ free_split_directories (bin_dirs);
+ free_split_directories (prefix_dirs);
+ return NULL;
+ }
/* Build up the pathnames in argv[0]. */
*ret = '\0';
More information about the svn-src-all
mailing list