aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan S. Arnold <rsa@us.ibm.com>2011-05-25 11:11:25 -0500
committerRyan S. Arnold <rsa@us.ibm.com>2011-05-25 11:11:25 -0500
commitd3207287b36184f3d0fe531bb2dba1a9fb67e3c3 (patch)
tree479e1c22ae9f4abd0f8931296c8a19e274406b2d
parenta789ac929256779b79a40a654fe80cdea384897d (diff)
downloadglibc-d3207287b36184f3d0fe531bb2dba1a9fb67e3c3.tar
glibc-d3207287b36184f3d0fe531bb2dba1a9fb67e3c3.tar.gz
glibc-d3207287b36184f3d0fe531bb2dba1a9fb67e3c3.tar.bz2
glibc-d3207287b36184f3d0fe531bb2dba1a9fb67e3c3.zip
Correct "//" in search paths due to LD_AT_PLATFORM=""
-rw-r--r--ChangeLog8
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/dl-librecon.h20
2 files changed, 23 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 37438bbd95..f172c0d465 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2011-05-25 Ryan S. Arnold <rsa@us.ibm.com>
+
+ * sysdeps/unix/sysv/linux/powerpc/dl-librecon.h
+ (EXTRA_LD_ENVVARS_11): Fix condition where there's an extra slash in
+ the search path, i.e., "//" when LD_AT_PLATFORM= or
+ LD_AT_PLATFORM="".
+ (EXTRA_UNSECURE_ENVVARS): Add LD_AT_PLATFORM to the list.
+
2011-02-11 Jakub Jelinek <jakub@redhat.com>
* stdio-common/printf-parsemb.c (__parse_one_specmb): Handle
diff --git a/sysdeps/unix/sysv/linux/powerpc/dl-librecon.h b/sysdeps/unix/sysv/linux/powerpc/dl-librecon.h
index 19dafac63e..19c3da7cfb 100644
--- a/sysdeps/unix/sysv/linux/powerpc/dl-librecon.h
+++ b/sysdeps/unix/sysv/linux/powerpc/dl-librecon.h
@@ -1,5 +1,5 @@
/* Optional code to distinguish library flavours.
- Copyright (C) 2010 Free Software Foundation, Inc.
+ Copyright (C) 2010, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Peter Bergner <bergner@linux.vnet.ibm.com>
@@ -20,17 +20,27 @@
#ifndef _DL_LIBRECON_H
+#include <string.h>
#include <sysdeps/unix/sysv/linux/dl-librecon.h>
/* Recognizing extra environment variables. */
#define EXTRA_LD_ENVVARS_11 \
if (memcmp (envline, "AT_PLATFORM", 11) == 0) \
{ \
- GLRO(dl_platform) = &envline[12]; \
- /* Determine the length of the platform name. */ \
- if (GLRO(dl_platform) != NULL) \
- GLRO(dl_platformlen) = strlen (GLRO(dl_platform)); \
+ int platformlen = strlen (&envline[12]); \
+ GLRO(dl_platformlen) = platformlen; \
+ if (platformlen > 0) \
+ { \
+ GLRO(dl_platform) = &envline[12]; \
+ break; \
+ } \
+ GLRO(dl_platform) = NULL; \
break; \
}
+/* Extra unsecure variables. The names are all stuffed in a single
+ string which means they have to be terminated with a '\0' explicitly. */
+#define EXTRA_UNSECURE_ENVVARS \
+ "LD_AT_PLATFORM\0"
+
#endif /* dl-librecon.h */