aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--elf/dl-load.c18
2 files changed, 13 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 22a4a9f557..1dd4b86de2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2018-01-01 Dmitry V. Levin <ldv@altlinux.org>
+
+ * elf/dl-load.c (decompose_rpath): Check for rpath emptiness before
+ making a copy of it.
+
2018-01-01 Joseph Myers <joseph@codesourcery.com>
* manual/texinfo.tex: Update to version 2017-12-26.21 with
diff --git a/elf/dl-load.c b/elf/dl-load.c
index d9ec49d15e..7554a99b5a 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
@@ -499,7 +499,6 @@ decompose_rpath (struct r_search_path_struct *sps,
{
/* Make a copy we can work with. */
const char *where = l->l_name;
- char *copy;
char *cp;
struct r_search_path_elem **result;
size_t nelems;
@@ -538,22 +537,21 @@ decompose_rpath (struct r_search_path_struct *sps,
while (*inhp != '\0');
}
+ /* Ignore empty rpaths. */
+ if (*rpath == '\0')
+ {
+ sps->dirs = (struct r_search_path_elem **) -1;
+ return false;
+ }
+
/* Make a writable copy. */
- copy = __strdup (rpath);
+ char *copy = __strdup (rpath);
if (copy == NULL)
{
errstring = N_("cannot create RUNPATH/RPATH copy");
goto signal_error;
}
- /* Ignore empty rpaths. */
- if (*copy == 0)
- {
- free (copy);
- sps->dirs = (struct r_search_path_elem **) -1;
- return false;
- }
-
/* Count the number of necessary elements in the result array. */
nelems = 0;
for (cp = copy; *cp != '\0'; ++cp)