mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-03 22:53:37 +08:00
Remove CHECK_STRING, CHECK_STRING_NULL_OK and __ubp_memchr.
This commit is contained in:
parent
903ae060db
commit
6277fdabc0
63
ChangeLog
63
ChangeLog
@ -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]
|
||||
|
@ -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
|
||||
|
@ -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]
|
||||
|
@ -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.
|
||||
|
@ -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]
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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__ */
|
||||
|
||||
|
@ -333,7 +333,4 @@ L(pop): popl %edi /* pop saved registers */
|
||||
END (BP_SYM (__memchr))
|
||||
|
||||
weak_alias (BP_SYM (__memchr), BP_SYM (memchr))
|
||||
#if !__BOUNDED_POINTERS__
|
||||
weak_alias (__memchr, __ubp_memchr)
|
||||
#endif
|
||||
libc_hidden_builtin_def (memchr)
|
||||
|
@ -139,7 +139,4 @@ ENTRY(__memchr)
|
||||
END(__memchr)
|
||||
|
||||
weak_alias (__memchr, memchr)
|
||||
#if !__BOUNDED_POINTERS__
|
||||
weak_alias (__memchr, __ubp_memchr)
|
||||
#endif
|
||||
libc_hidden_builtin_def (memchr)
|
||||
|
@ -256,7 +256,4 @@ ENTRY(__memchr)
|
||||
END(__memchr)
|
||||
|
||||
weak_alias (__memchr, memchr)
|
||||
#if !__BOUNDED_POINTERS__
|
||||
weak_alias (__memchr, __ubp_memchr)
|
||||
#endif
|
||||
libc_hidden_builtin_def (memchr)
|
||||
|
@ -21,7 +21,8 @@
|
||||
#include <sysdep.h>
|
||||
#include <alloca.h>
|
||||
#include <sys/syscall.h>
|
||||
#include <bp-checks.h>
|
||||
|
||||
/* Consider moving to syscalls.list. */
|
||||
|
||||
int
|
||||
__execve (file, argv, envp)
|
||||
@ -29,34 +30,6 @@ __execve (file, argv, envp)
|
||||
char *const argv[];
|
||||
char *const envp[];
|
||||
{
|
||||
#if __BOUNDED_POINTERS__
|
||||
{
|
||||
char *const *v;
|
||||
int i;
|
||||
char *__unbounded *__unbounded ubp_argv;
|
||||
char *__unbounded *__unbounded ubp_envp;
|
||||
char *__unbounded *__unbounded ubp_v;
|
||||
|
||||
for (v = argv; *v; v++)
|
||||
;
|
||||
i = v - argv + 1;
|
||||
ubp_argv = (char *__unbounded *__unbounded) alloca (sizeof (*ubp_argv) * i);
|
||||
for (v = argv, ubp_v = ubp_argv; --i; v++, ubp_v++)
|
||||
*ubp_v = CHECK_STRING (*v);
|
||||
*ubp_v = 0;
|
||||
|
||||
for (v = envp; *v; v++)
|
||||
;
|
||||
i = v - envp + 1;
|
||||
ubp_envp = (char *__unbounded *__unbounded) alloca (sizeof (*ubp_envp) * i);
|
||||
for (v = envp, ubp_v = ubp_envp; --i; v++, ubp_v++)
|
||||
*ubp_v = CHECK_STRING (*v);
|
||||
*ubp_v = 0;
|
||||
|
||||
return INLINE_SYSCALL (execve, 3, CHECK_STRING (file), ubp_argv, ubp_envp);
|
||||
}
|
||||
#else
|
||||
return INLINE_SYSCALL (execve, 3, file, argv, envp);
|
||||
#endif
|
||||
}
|
||||
weak_alias (__execve, execve)
|
||||
|
@ -109,10 +109,10 @@ __fxstatat (int vers, int fd, const char *file, struct stat *st, int flag)
|
||||
if (vers == _STAT_VER_KERNEL)
|
||||
{
|
||||
if (flag & AT_SYMLINK_NOFOLLOW)
|
||||
result = INTERNAL_SYSCALL (lstat, err, 2, CHECK_STRING (file),
|
||||
result = INTERNAL_SYSCALL (lstat, err, 2, file,
|
||||
CHECK_1 ((struct kernel_stat *) st));
|
||||
else
|
||||
result = INTERNAL_SYSCALL (stat, err, 2, CHECK_STRING (file),
|
||||
result = INTERNAL_SYSCALL (stat, err, 2, file,
|
||||
CHECK_1 ((struct kernel_stat *) st));
|
||||
|
||||
if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
|
||||
@ -126,11 +126,9 @@ __fxstatat (int vers, int fd, const char *file, struct stat *st, int flag)
|
||||
}
|
||||
#else
|
||||
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 __xstat_conv (vers, &kst, st);
|
||||
|
@ -99,11 +99,9 @@ __fxstatat64 (int vers, int fd, const char *file, struct stat64 *st, int flag)
|
||||
}
|
||||
|
||||
if (flag & AT_SYMLINK_NOFOLLOW)
|
||||
result = INTERNAL_SYSCALL (lstat64, err, 2, CHECK_STRING (file),
|
||||
CHECK_1 (st));
|
||||
result = INTERNAL_SYSCALL (lstat64, err, 2, file, CHECK_1 (st));
|
||||
else
|
||||
result = INTERNAL_SYSCALL (stat64, err, 2, CHECK_STRING (file),
|
||||
CHECK_1 (st));
|
||||
result = INTERNAL_SYSCALL (stat64, err, 2, file, CHECK_1 (st));
|
||||
if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
|
||||
{
|
||||
# if defined _HAVE_STAT64___ST_INO && __ASSUME_ST_INO_64_BIT == 0
|
||||
|
@ -26,7 +26,6 @@
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <sys/syscall.h>
|
||||
#include <bp-checks.h>
|
||||
|
||||
#include <kernel-features.h>
|
||||
|
||||
@ -78,7 +77,7 @@ __getcwd (char *buf, size_t size)
|
||||
|
||||
int retval;
|
||||
|
||||
retval = INLINE_SYSCALL (getcwd, 2, CHECK_STRING (path), alloc_size);
|
||||
retval = INLINE_SYSCALL (getcwd, 2, path, alloc_size);
|
||||
if (retval >= 0)
|
||||
{
|
||||
#ifndef NO_ALLOCATION
|
||||
|
@ -21,7 +21,6 @@
|
||||
#include <sysdep.h>
|
||||
#include <sys/syscall.h>
|
||||
#include <shlib-compat.h>
|
||||
#include <bp-checks.h>
|
||||
|
||||
#include <linux/posix_types.h>
|
||||
|
||||
@ -45,7 +44,7 @@ extern int __real_chown (const char *__file, uid_t __owner, gid_t __group);
|
||||
int
|
||||
__real_chown (const char *file, uid_t owner, gid_t group)
|
||||
{
|
||||
return INLINE_SYSCALL (chown32, 3, CHECK_STRING (file), owner, group);
|
||||
return INLINE_SYSCALL (chown32, 3, file, owner, group);
|
||||
}
|
||||
|
||||
|
||||
|
@ -24,7 +24,6 @@
|
||||
#include <sysdep.h>
|
||||
#include <sys/syscall.h>
|
||||
#include <shlib-compat.h>
|
||||
#include <bp-checks.h>
|
||||
|
||||
#include <linux/posix_types.h>
|
||||
#include <kernel-features.h>
|
||||
@ -86,11 +85,9 @@ fchownat (int fd, const char *file, uid_t owner, gid_t group, int flag)
|
||||
INTERNAL_SYSCALL_DECL (err);
|
||||
|
||||
if (flag & AT_SYMLINK_NOFOLLOW)
|
||||
result = INTERNAL_SYSCALL (lchown32, err, 3, CHECK_STRING (file), owner,
|
||||
group);
|
||||
result = INTERNAL_SYSCALL (lchown32, err, 3, file, owner, group);
|
||||
else
|
||||
result = INTERNAL_SYSCALL (chown32, err, 3, CHECK_STRING (file), owner,
|
||||
group);
|
||||
result = INTERNAL_SYSCALL (chown32, err, 3, file, owner, group);
|
||||
|
||||
if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (result, err), 0))
|
||||
{
|
||||
|
@ -102,20 +102,18 @@ __fxstatat (int vers, int fd, const char *file, struct stat *st, int flag)
|
||||
if (vers == _STAT_VER_KERNEL)
|
||||
{
|
||||
if (flag & AT_SYMLINK_NOFOLLOW)
|
||||
result = INTERNAL_SYSCALL (lstat, err, 2, CHECK_STRING (file),
|
||||
result = INTERNAL_SYSCALL (lstat, err, 2, file,
|
||||
CHECK_1 ((struct kernel_stat *) st));
|
||||
else
|
||||
result = INTERNAL_SYSCALL (stat, err, 2, CHECK_STRING (file),
|
||||
result = INTERNAL_SYSCALL (stat, err, 2, file,
|
||||
CHECK_1 ((struct kernel_stat *) st));
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (flag & AT_SYMLINK_NOFOLLOW)
|
||||
result = INTERNAL_SYSCALL (lstat64, err, 2, CHECK_STRING (file),
|
||||
__ptrvalue (&st64));
|
||||
result = INTERNAL_SYSCALL (lstat64, err, 2, file, __ptrvalue (&st64));
|
||||
else
|
||||
result = INTERNAL_SYSCALL (stat64, err, 2, CHECK_STRING (file),
|
||||
__ptrvalue (&st64));
|
||||
result = INTERNAL_SYSCALL (stat64, err, 2, file, __ptrvalue (&st64));
|
||||
if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1))
|
||||
return __xstat32_conv (vers, &st64, st);
|
||||
|
||||
|
@ -20,7 +20,6 @@
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <sys/syscall.h>
|
||||
#include <bp-checks.h>
|
||||
|
||||
#include <linux/posix_types.h>
|
||||
|
||||
@ -29,7 +28,7 @@
|
||||
int
|
||||
__lchown (const char *file, uid_t owner, gid_t group)
|
||||
{
|
||||
return INLINE_SYSCALL (lchown32, 3, CHECK_STRING (file), owner, group);
|
||||
return INLINE_SYSCALL (lchown32, 3, file, owner, group);
|
||||
}
|
||||
|
||||
weak_alias (__lchown, lchown)
|
||||
|
@ -41,12 +41,12 @@ __lxstat (int vers, const char *name, struct stat *buf)
|
||||
int result;
|
||||
|
||||
if (vers == _STAT_VER_KERNEL)
|
||||
return INLINE_SYSCALL (lstat, 2, CHECK_STRING (name), CHECK_1 ((struct kernel_stat *) buf));
|
||||
return INLINE_SYSCALL (lstat, 2, name, CHECK_1 ((struct kernel_stat *) buf));
|
||||
|
||||
{
|
||||
struct stat64 buf64;
|
||||
|
||||
result = INLINE_SYSCALL (lstat64, 2, CHECK_STRING (name), __ptrvalue (&buf64));
|
||||
result = INLINE_SYSCALL (lstat64, 2, name, __ptrvalue (&buf64));
|
||||
if (result == 0)
|
||||
result = __xstat32_conv (vers, &buf64, buf);
|
||||
return result;
|
||||
|
@ -41,12 +41,12 @@ __xstat (int vers, const char *name, struct stat *buf)
|
||||
int result;
|
||||
|
||||
if (vers == _STAT_VER_KERNEL)
|
||||
return INLINE_SYSCALL (stat, 2, CHECK_STRING (name), CHECK_1 ((struct kernel_stat *) buf));
|
||||
return INLINE_SYSCALL (stat, 2, name, CHECK_1 ((struct kernel_stat *) buf));
|
||||
|
||||
{
|
||||
struct stat64 buf64;
|
||||
|
||||
result = INLINE_SYSCALL (stat64, 2, CHECK_STRING (name), __ptrvalue (&buf64));
|
||||
result = INLINE_SYSCALL (stat64, 2, name, __ptrvalue (&buf64));
|
||||
if (result == 0)
|
||||
result = __xstat32_conv (vers, &buf64, buf);
|
||||
return result;
|
||||
|
@ -36,7 +36,7 @@ int
|
||||
__lxstat (int vers, const char *name, struct stat *buf)
|
||||
{
|
||||
if (vers == _STAT_VER_KERNEL)
|
||||
return INLINE_SYSCALL (lstat, 2, CHECK_STRING (name),
|
||||
return INLINE_SYSCALL (lstat, 2, name,
|
||||
CHECK_1 ((struct kernel_stat *) buf));
|
||||
|
||||
#ifdef STAT_IS_KERNEL_STAT
|
||||
@ -46,7 +46,7 @@ __lxstat (int vers, const char *name, struct stat *buf)
|
||||
struct kernel_stat kbuf;
|
||||
int result;
|
||||
|
||||
result = INLINE_SYSCALL (lstat, 2, CHECK_STRING (name), __ptrvalue (&kbuf));
|
||||
result = INLINE_SYSCALL (lstat, 2, name, __ptrvalue (&kbuf));
|
||||
if (result == 0)
|
||||
result = __xstat_conv (vers, &kbuf, buf);
|
||||
|
||||
|
@ -32,7 +32,7 @@ int
|
||||
___lxstat64 (int vers, const char *name, struct stat64 *buf)
|
||||
{
|
||||
int result;
|
||||
result = INLINE_SYSCALL (lstat64, 2, CHECK_STRING (name), CHECK_1 (buf));
|
||||
result = INLINE_SYSCALL (lstat64, 2, name, CHECK_1 (buf));
|
||||
#if defined _HAVE_STAT64___ST_INO && __ASSUME_ST_INO_64_BIT == 0
|
||||
if (__builtin_expect (!result, 1) && buf->__st_ino != (__ino_t) buf->st_ino)
|
||||
buf->st_ino = buf->__st_ino;
|
||||
|
@ -21,7 +21,6 @@
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <sys/syscall.h>
|
||||
#include <bp-checks.h>
|
||||
|
||||
/* Truncate the file referenced by FD to LENGTH bytes. */
|
||||
int
|
||||
@ -30,7 +29,7 @@ truncate64 (path, length)
|
||||
off64_t length;
|
||||
{
|
||||
/* On PPC32 64bit values are aligned in odd/even register pairs. */
|
||||
int result = INLINE_SYSCALL (truncate64, 4, CHECK_STRING (path), 0,
|
||||
int result = INLINE_SYSCALL (truncate64, 4, path, 0,
|
||||
(long) (length >> 32),
|
||||
(long) length);
|
||||
return result;
|
||||
|
@ -21,7 +21,6 @@
|
||||
#include <sysdep.h>
|
||||
#include <sys/syscall.h>
|
||||
#include <shlib-compat.h>
|
||||
#include <bp-checks.h>
|
||||
|
||||
#include <linux/posix_types.h>
|
||||
|
||||
@ -42,7 +41,7 @@
|
||||
int
|
||||
__real_chown (const char *file, uid_t owner, gid_t group)
|
||||
{
|
||||
return INLINE_SYSCALL (chown32, 3, CHECK_STRING (file), owner, group);
|
||||
return INLINE_SYSCALL (chown32, 3, file, owner, group);
|
||||
}
|
||||
|
||||
|
||||
|
@ -20,7 +20,6 @@
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <sys/syscall.h>
|
||||
#include <bp-checks.h>
|
||||
|
||||
#include <linux/posix_types.h>
|
||||
|
||||
@ -29,7 +28,7 @@
|
||||
int
|
||||
__lchown (const char *file, uid_t owner, gid_t group)
|
||||
{
|
||||
return INLINE_SYSCALL (lchown32, 3, CHECK_STRING (file), owner, group);
|
||||
return INLINE_SYSCALL (lchown32, 3, file, owner, group);
|
||||
}
|
||||
|
||||
weak_alias (__lchown, lchown)
|
||||
|
@ -20,7 +20,6 @@
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <sys/syscall.h>
|
||||
#include <bp-checks.h>
|
||||
|
||||
#include <linux/posix_types.h>
|
||||
|
||||
@ -29,7 +28,7 @@
|
||||
int
|
||||
__chown (const char *file, uid_t owner, gid_t group)
|
||||
{
|
||||
return INLINE_SYSCALL (chown32, 3, CHECK_STRING (file), owner, group);
|
||||
return INLINE_SYSCALL (chown32, 3, file, owner, group);
|
||||
}
|
||||
libc_hidden_def (__chown)
|
||||
weak_alias (__chown, chown)
|
||||
|
@ -22,7 +22,6 @@
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <sys/syscall.h>
|
||||
#include <bp-checks.h>
|
||||
|
||||
/* Truncate the file referenced by FD 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, 3, CHECK_STRING (path),
|
||||
int result = INLINE_SYSCALL (truncate64, 3, path,
|
||||
__LONG_LONG_PAIR (high, low));
|
||||
return result;
|
||||
}
|
||||
|
@ -33,7 +33,7 @@ int
|
||||
__lxstat (int vers, const char *name, struct stat *buf)
|
||||
{
|
||||
if (vers == _STAT_VER_KERNEL || vers == _STAT_VER_LINUX)
|
||||
return INLINE_SYSCALL (lstat, 2, CHECK_STRING (name), CHECK_1 (buf));
|
||||
return INLINE_SYSCALL (lstat, 2, name, CHECK_1 (buf));
|
||||
|
||||
__set_errno (EINVAL);
|
||||
return -1;
|
||||
|
@ -23,7 +23,6 @@
|
||||
|
||||
#include <sysdep.h>
|
||||
#include <sys/syscall.h>
|
||||
#include <bp-checks.h>
|
||||
|
||||
/* Create a device file named PATH, with permission and special bits MODE
|
||||
and device number DEV (which can be constructed from major and minor
|
||||
@ -47,8 +46,7 @@ __xmknod (int vers, const char *path, mode_t mode, dev_t *dev)
|
||||
return -1;
|
||||
}
|
||||
|
||||
return INLINE_SYSCALL (mknod, 3, CHECK_STRING (path), mode,
|
||||
(unsigned int) k_dev);
|
||||
return INLINE_SYSCALL (mknod, 3, path, mode, (unsigned int) k_dev);
|
||||
}
|
||||
|
||||
weak_alias (__xmknod, _xmknod)
|
||||
|
@ -26,7 +26,6 @@
|
||||
#include <sysdep.h>
|
||||
#include <kernel-features.h>
|
||||
#include <sys/syscall.h>
|
||||
#include <bp-checks.h>
|
||||
|
||||
|
||||
/* Create a device file named PATH relative to FD, with permission and
|
||||
@ -92,8 +91,7 @@ __xmknodat (int vers, int fd, const char *file, mode_t mode, dev_t *dev)
|
||||
file = buf;
|
||||
}
|
||||
|
||||
return INLINE_SYSCALL (mknod, 3, CHECK_STRING (file), mode,
|
||||
(unsigned int) k_dev);
|
||||
return INLINE_SYSCALL (mknod, 3, file, mode, (unsigned int) k_dev);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -36,7 +36,7 @@ int
|
||||
__xstat (int vers, const char *name, struct stat *buf)
|
||||
{
|
||||
if (vers == _STAT_VER_KERNEL)
|
||||
return INLINE_SYSCALL (stat, 2, CHECK_STRING (name),
|
||||
return INLINE_SYSCALL (stat, 2, name,
|
||||
CHECK_1 ((struct kernel_stat *) buf));
|
||||
|
||||
#ifdef STAT_IS_KERNEL_STAT
|
||||
@ -46,8 +46,7 @@ __xstat (int vers, const char *name, struct stat *buf)
|
||||
struct kernel_stat kbuf;
|
||||
int result;
|
||||
|
||||
result = INLINE_SYSCALL (stat, 2, CHECK_STRING (name),
|
||||
__ptrvalue (&kbuf));
|
||||
result = INLINE_SYSCALL (stat, 2, name, __ptrvalue (&kbuf));
|
||||
if (result == 0)
|
||||
result = __xstat_conv (vers, &kbuf, buf);
|
||||
|
||||
|
@ -33,7 +33,7 @@ int
|
||||
___xstat64 (int vers, const char *name, struct stat64 *buf)
|
||||
{
|
||||
int result;
|
||||
result = INLINE_SYSCALL (stat64, 2, CHECK_STRING (name), CHECK_1 (buf));
|
||||
result = INLINE_SYSCALL (stat64, 2, name, CHECK_1 (buf));
|
||||
#if defined _HAVE_STAT64___ST_INO && __ASSUME_ST_INO_64_BIT == 0
|
||||
if (__builtin_expect (!result, 1) && buf->__st_ino != (__ino_t) buf->st_ino)
|
||||
buf->st_ino = buf->__st_ino;
|
||||
|
Loading…
Reference in New Issue
Block a user