Skip extra zeroes when searching auxv on s390
authorAndreas Krebbel <Andreas.Krebbel@de.ibm.com>
Mon, 18 Apr 2011 00:41:45 +0000 (20:41 -0400)
committerUlrich Drepper <drepper@gmail.com>
Mon, 18 Apr 2011 00:41:45 +0000 (20:41 -0400)
ChangeLog
sysdeps/s390/s390-32/elf/start.S

index 468799c..99f4b64 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2011-04-11  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
+
+       * sysdeps/s390/s390-32/elf/start.S (_start): Skip extra zeroes
+       between environment variables and auxiliary vector.
+
 2011-04-16  Ulrich Drepper  <drepper@gmail.com>
 
        * Makefile: Add rules to build linkobj/libc.so.
index 8e48abb..c568f82 100644 (file)
@@ -75,6 +75,18 @@ _start:
        ltr     %r5,%r5
        jne     .L12
 
+       /* Usually the auxiliary vector can be expected directly after
+          the environment variables.  But we have to skip extra zeros
+          because the loader might have removed unsecure variables for
+          setuid programs.  */
+
+.L26:  l       %r5,0(%r6)
+       la      %r6,4(%r6)
+       ltr     %r5,%r5
+       jz      .L26
+
+       ahi     %r6,-4
+
        /* Obtain the needed values from the auxiliary vector.  */
 
        lhi     %r7,16         /* AT_HWCAP */