diff options
39 files changed, 143 insertions, 130 deletions
@@ -1,3 +1,66 @@ +2013-02-04 Joseph Myers <joseph@codesourcery.com> + + [BZ #13550] + * sysdeps/generic/bp-checks.h [__BOUNDED_POINTERS__] + (__ubp_memchr): Remove prototype. + [__BOUNDED_POINTERS__] (_CHECK_STRING): Remove macro. + [__BOUNDED_POINTERS__] (CHECK_STRING): Likewise. + [__BOUNDED_POINTERS__] (CHECK_STRING_NULL_OK): Likewise. + [!__BOUNDED_POINTERS__] (CHECK_STRING): Likewise. + * sysdeps/i386/memchr.S [!__BOUNDED_POINTERS__] (__ubp_memchr): + Remove alias. + * sysdeps/sparc/sparc32/memchr.S [!__BOUNDED_POINTERS__] + (__ubp_memchr): Likewise. + * sysdeps/sparc/sparc64/memchr.S [!__BOUNDED_POINTERS__] + (__ubp_memchr): Likewise. + * sysdeps/unix/sysv/linux/execve.c: Do not include <bp-checks.h>. + (__execve) [__BOUNDED_POINTERS__]: Remove conditional code. + (__execve) [!__BOUNDED_POINTERS__]: Make code unconditional. + * sysdeps/unix/sysv/linux/fxstatat.c (__fxstatat): Do not use + CHECK_STRING. + * sysdeps/unix/sysv/linux/fxstatat64.c (__fxstatat64): Likewise. + * sysdeps/unix/sysv/linux/getcwd.c: Do not include <bp-checks.h>. + (__getcwd): Do not use CHECK_STRING. + * sysdeps/unix/sysv/linux/i386/chown.c: Do not include + <bp-checks.h>. + (__real_chown): Do not use CHECK_STRING. + * sysdeps/unix/sysv/linux/i386/fchownat.c: Do not include + <bp-checks.h>. + (fchownat): Do not use CHECK_STRING. + * sysdeps/unix/sysv/linux/i386/fxstatat.c (__fxstatat): Do not use + CHECK_STRING. + * sysdeps/unix/sysv/linux/i386/lchown.c: Do not include + <bp-checks.h>. + (__lchown): Do not use CHECK_STRING. + * sysdeps/unix/sysv/linux/i386/lxstat.c (__lxstat): Likewise. + * sysdeps/unix/sysv/linux/i386/xstat.c (__xstat): Likewise. + * sysdeps/unix/sysv/linux/lxstat.c (__lxstat): Likewise. + * sysdeps/unix/sysv/linux/lxstat64.c (___lxstat64): Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/truncate64.c: Do not + include <bp-checks.h>. + (truncate64): Do not use CHECK_STRING. + * sysdeps/unix/sysv/linux/s390/s390-32/chown.c: Do not include + <bp-checks.h>. + (__real_chown): Do not use CHECK_STRING. + * sysdeps/unix/sysv/linux/s390/s390-32/lchown.c: Do not include + <bp-checks.h>. + (__lchown): Do not use CHECK_STRING. + * sysdeps/unix/sysv/linux/sh/chown.c: Do not include + <bp-checks.h>. + (__chown): Do not use CHECK_STRING. + * sysdeps/unix/sysv/linux/truncate64.c: Do not include + <bp-checks.h>. + (truncate64): Do not use CHECK_STRING. + * sysdeps/unix/sysv/linux/wordsize-64/lxstat.c (__lxstat): + Likewise. + * sysdeps/unix/sysv/linux/xmknod.c: Do not include <bp-checks.h>. + (__xmknod): Do not use CHECK_STRING. + * sysdeps/unix/sysv/linux/xmknodat.c: Do not include + <bp-checks.h>. + (__xmknodat): Do not use CHECK_STRING. + * sysdeps/unix/sysv/linux/xstat.c (__xstat): Likewise. + * sysdeps/unix/sysv/linux/xstat64.c (___xstat64): Likewise. + 2013-02-04 Andreas Schwab <schwab@suse.de> [BZ #14142] diff --git a/ports/ChangeLog.arm b/ports/ChangeLog.arm index d44ea76244..b4fb546d96 100644 --- a/ports/ChangeLog.arm +++ b/ports/ChangeLog.arm @@ -1,3 +1,10 @@ +2013-02-04 Joseph Myers <joseph@codesourcery.com> + + [BZ #13550] + * sysdeps/unix/sysv/linux/arm/truncate64.c: Do not include + <bp-checks.h>. + (truncate64): Do not use CHECK_STRING. + 2013-01-02 Joseph Myers <joseph@codesourcery.com> * All files with FSF copyright notices: Update copyright dates diff --git a/ports/ChangeLog.ia64 b/ports/ChangeLog.ia64 index 4b76b4f6bf..3b00dafe85 100644 --- a/ports/ChangeLog.ia64 +++ b/ports/ChangeLog.ia64 @@ -1,3 +1,12 @@ +2013-02-04 Joseph Myers <joseph@codesourcery.com> + + [BZ #13550] + * sysdeps/ia64/memchr.S [!__BOUNDED_POINTERS__] (__ubp_memchr): + Remove alias. + * sysdeps/unix/sysv/linux/ia64/umount.c: Do not include + <bp-checks.h>. + (umount): Do not use CHECK_STRING. + 2013-01-31 Joseph Myers <joseph@codesourcery.com> [BZ #13550] diff --git a/ports/ChangeLog.m68k b/ports/ChangeLog.m68k index 688cce431a..3c2dd00892 100644 --- a/ports/ChangeLog.m68k +++ b/ports/ChangeLog.m68k @@ -1,3 +1,9 @@ +2013-02-04 Joseph Myers <joseph@codesourcery.com> + + [BZ #13550] + * sysdeps/m68k/memchr.S [!__BOUNDED_POINTERS__] (__ubp_memchr): + Remove alias. + 2013-01-20 Andreas Schwab <schwab@linux-m68k.org> * sysdeps/m68k/m680x0/fpu/libm-test-ulps: Update. diff --git a/ports/ChangeLog.mips b/ports/ChangeLog.mips index 49a3938314..65d420673f 100644 --- a/ports/ChangeLog.mips +++ b/ports/ChangeLog.mips @@ -1,3 +1,19 @@ +2013-02-04 Joseph Myers <joseph@codesourcery.com> + + [BZ #13550] + * sysdeps/unix/sysv/linux/mips/mips32/truncate64.c: Do not include + <bp-checks.h>. + (truncate64): Do not use CHECK_STRING. + * sysdeps/unix/sysv/linux/mips/mips64/fxstatat64.c: Do not include + <bp-checks.h>. + (__fxstatat64): Do not use CHECK_STRING. + * sysdeps/unix/sysv/linux/mips/mips64/lxstat64.c: Do not include + <bp-checks.h>. + (__lxstat64): Do not use CHECK_STRING. + * sysdeps/unix/sysv/linux/mips/mips64/xstat64.c: Do not include + <bp-checks.h>. + (__xstat64): Do not use CHECK_STRING. + 2013-01-31 Joseph Myers <joseph@codesourcery.com> [BZ #13550] diff --git a/ports/sysdeps/ia64/memchr.S b/ports/sysdeps/ia64/memchr.S index f23a41cb76..6102644071 100644 --- a/ports/sysdeps/ia64/memchr.S +++ b/ports/sysdeps/ia64/memchr.S @@ -154,7 +154,4 @@ ENTRY(__memchr) END(__memchr) weak_alias (__memchr, memchr) -#if !__BOUNDED_POINTERS__ -weak_alias (__memchr, __ubp_memchr) -#endif libc_hidden_builtin_def (memchr) diff --git a/ports/sysdeps/m68k/memchr.S b/ports/sysdeps/m68k/memchr.S index a15ebded00..07b102523d 100644 --- a/ports/sysdeps/m68k/memchr.S +++ b/ports/sysdeps/m68k/memchr.S @@ -304,7 +304,4 @@ L(L9:) END(__memchr) weak_alias (__memchr, memchr) -#if !__BOUNDED_POINTERS__ -weak_alias (__memchr, __ubp_memchr) -#endif libc_hidden_builtin_def (memchr) diff --git a/ports/sysdeps/unix/sysv/linux/arm/truncate64.c b/ports/sysdeps/unix/sysv/linux/arm/truncate64.c index 4367d1efee..6e52e32637 100644 --- a/ports/sysdeps/unix/sysv/linux/arm/truncate64.c +++ b/ports/sysdeps/unix/sysv/linux/arm/truncate64.c @@ -22,7 +22,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> /* Truncate the file FD refers to to LENGTH bytes. */ int @@ -30,7 +29,7 @@ truncate64 (const char *path, off64_t length) { unsigned int low = length & 0xffffffff; unsigned int high = length >> 32; - int result = INLINE_SYSCALL (truncate64, 4, CHECK_STRING (path), 0, + int result = INLINE_SYSCALL (truncate64, 4, path, 0, __LONG_LONG_PAIR (high, low)); return result; } diff --git a/ports/sysdeps/unix/sysv/linux/ia64/umount.c b/ports/sysdeps/unix/sysv/linux/ia64/umount.c index a15a716869..a3df7863fa 100644 --- a/ports/sysdeps/unix/sysv/linux/ia64/umount.c +++ b/ports/sysdeps/unix/sysv/linux/ia64/umount.c @@ -20,11 +20,10 @@ #include <errno.h> #include <sysdep.h> -#include <bp-checks.h> /* Unmount a filesystem. */ int umount (const char *special_file) { - return INLINE_SYSCALL (umount, 2, CHECK_STRING (special_file), 0); + return INLINE_SYSCALL (umount, 2, special_file, 0); } diff --git a/ports/sysdeps/unix/sysv/linux/mips/mips32/truncate64.c b/ports/sysdeps/unix/sysv/linux/mips/mips32/truncate64.c index 4367d1efee..6e52e32637 100644 --- a/ports/sysdeps/unix/sysv/linux/mips/mips32/truncate64.c +++ b/ports/sysdeps/unix/sysv/linux/mips/mips32/truncate64.c @@ -22,7 +22,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> /* Truncate the file FD refers to to LENGTH bytes. */ int @@ -30,7 +29,7 @@ truncate64 (const char *path, off64_t length) { unsigned int low = length & 0xffffffff; unsigned int high = length >> 32; - int result = INLINE_SYSCALL (truncate64, 4, CHECK_STRING (path), 0, + int result = INLINE_SYSCALL (truncate64, 4, path, 0, __LONG_LONG_PAIR (high, low)); return result; } diff --git a/ports/sysdeps/unix/sysv/linux/mips/mips64/fxstatat64.c b/ports/sysdeps/unix/sysv/linux/mips/mips64/fxstatat64.c index 32571e717d..42c9f5c404 100644 --- a/ports/sysdeps/unix/sysv/linux/mips/mips64/fxstatat64.c +++ b/ports/sysdeps/unix/sysv/linux/mips/mips64/fxstatat64.c @@ -25,7 +25,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <kernel-features.h> @@ -96,11 +95,9 @@ __fxstatat64 (int vers, int fd, const char *file, struct stat64 *st, int flag) } if (flag & AT_SYMLINK_NOFOLLOW) - result = INTERNAL_SYSCALL (lstat, err, 2, CHECK_STRING (file), - __ptrvalue (&kst)); + result = INTERNAL_SYSCALL (lstat, err, 2, file, __ptrvalue (&kst)); else - result = INTERNAL_SYSCALL (stat, err, 2, CHECK_STRING (file), - __ptrvalue (&kst)); + result = INTERNAL_SYSCALL (stat, err, 2, file, __ptrvalue (&kst)); if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1)) return __xstat64_conv (vers, &kst, st); diff --git a/ports/sysdeps/unix/sysv/linux/mips/mips64/lxstat64.c b/ports/sysdeps/unix/sysv/linux/mips/mips64/lxstat64.c index 106271f759..fdaa755837 100644 --- a/ports/sysdeps/unix/sysv/linux/mips/mips64/lxstat64.c +++ b/ports/sysdeps/unix/sysv/linux/mips/mips64/lxstat64.c @@ -23,7 +23,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <xstatconv.h> @@ -34,7 +33,7 @@ __lxstat64 (int vers, const char *name, struct stat64 *buf) int result; struct kernel_stat kbuf; - result = INLINE_SYSCALL (lstat, 2, CHECK_STRING (name), __ptrvalue (&kbuf)); + result = INLINE_SYSCALL (lstat, 2, name, __ptrvalue (&kbuf)); if (result == 0) result = __xstat64_conv (vers, &kbuf, buf); diff --git a/ports/sysdeps/unix/sysv/linux/mips/mips64/xstat64.c b/ports/sysdeps/unix/sysv/linux/mips/mips64/xstat64.c index 2408e5e374..c6d8b5e798 100644 --- a/ports/sysdeps/unix/sysv/linux/mips/mips64/xstat64.c +++ b/ports/sysdeps/unix/sysv/linux/mips/mips64/xstat64.c @@ -23,7 +23,6 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <bp-checks.h> #include <xstatconv.h> @@ -35,7 +34,7 @@ __xstat64 (int vers, const char *name, struct stat64 *buf) int result; struct kernel_stat kbuf; - result = INLINE_SYSCALL (stat, 2, CHECK_STRING (name), __ptrvalue (&kbuf)); + result = INLINE_SYSCALL (stat, 2, name, __ptrvalue (&kbuf)); if (result == 0) result = __xstat64_conv (vers, &kbuf, buf); diff --git a/sysdeps/generic/bp-checks.h b/sysdeps/generic/bp-checks.h index cfff9155ec..13d00caf48 100644 --- a/sysdeps/generic/bp-checks.h +++ b/sysdeps/generic/bp-checks.h @@ -41,16 +41,6 @@ && BOUNDS_VIOLATED), \ __ptrvalue (ARG)) -extern void *__unbounded __ubp_memchr (const void *__unbounded, int, unsigned); - -# define _CHECK_STRING(ARG, COND) \ - (((COND) \ - && (__ptrvalue (ARG) < __ptrlow (ARG) \ - || !__ubp_memchr (__ptrvalue (ARG), '\0', \ - (__ptrhigh (ARG) - __ptrvalue (ARG)))) \ - && BOUNDS_VIOLATED), \ - __ptrvalue (ARG)) - /* Check bounds of a pointer seated to an array of N objects. */ # define CHECK_N(ARG, N) _CHECK_N ((ARG), (N), 1) /* Same as CHECK_N, but tolerate ARG == NULL. */ @@ -61,11 +51,6 @@ extern void *__unbounded __ubp_memchr (const void *__unbounded, int, unsigned); /* Same as CHECK_1, but tolerate ARG == NULL. */ # define CHECK_1_NULL_OK(ARG) CHECK_N_NULL_OK ((ARG), 1) -/* Check for NUL-terminator within string's bounds. */ -# define CHECK_STRING(ARG) _CHECK_STRING ((ARG), 1) -/* Same as CHECK_STRING, but tolerate ARG == NULL. */ -# define CHECK_STRING_NULL_OK(ARG) _CHECK_STRING ((ARG), __ptrvalue (ARG)) - #else /* !__BOUNDED_POINTERS__ */ /* Do nothing if not compiling with -fbounded-pointers. */ @@ -77,7 +62,6 @@ extern void *__unbounded __ubp_memchr (const void *__unbounded, int, unsigned); # define CHECK_1_NULL_OK(ARG) (ARG) # define CHECK_N(ARG, N) (ARG) # define CHECK_N_NULL_OK(ARG, N) (ARG) -# define CHECK_STRING(ARG) (ARG) #endif /* !__BOUNDED_POINTERS__ */ diff --git a/sysdeps/i386/memchr.S b/sysdeps/i386/memchr.S index 53cba10097..b9bb88a457 100644 --- a/sysdeps/i386/memchr.S +++ b/sysdeps/i386/memchr.S @@ -333,7 +333,4 @@ L(pop): popl %edi /* pop saved registers */ END (BP_SYM (__memchr)) |
