mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-21 01:12:26 +08:00
(__getgroups): Fix the error condition check for the return value of getgroups32.
This commit is contained in:
parent
441ee04334
commit
da058e4542
@ -47,8 +47,8 @@
|
||||
#ifndef PSEUDO_END
|
||||
#define PSEUDO_END(sym)
|
||||
#endif
|
||||
#ifndef PSEUDO_END_NOENTRY
|
||||
#define PSEUDO_END_NOENTRY(sym)
|
||||
#ifndef PSEUDO_END_NOERRNO
|
||||
#define PSEUDO_END_NOERRNO(sym) PSEUDO_END(sym)
|
||||
#endif
|
||||
|
||||
/* Wrappers around system calls should normally inline the system call code.
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1997, 1998, 2000, 2001, 2003 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -36,7 +36,7 @@ extern int __syscall_getgroups32 (int, __kernel_gid32_t *__unbounded);
|
||||
# if __ASSUME_32BITUIDS == 0
|
||||
/* This variable is shared with all files that need to check for 32bit
|
||||
uids. */
|
||||
extern int __libc_missing_32bit_uids;
|
||||
extern int __libc_missing_32bit_uids attribute_hidden;
|
||||
# endif
|
||||
#endif /* __NR_getgroups32 */
|
||||
|
||||
@ -64,7 +64,7 @@ __getgroups (int n, gid_t *groups)
|
||||
int saved_errno = errno;
|
||||
|
||||
result = INLINE_SYSCALL (getgroups32, 2, n, CHECK_N (groups, n));
|
||||
if (result == 0 || errno != ENOSYS)
|
||||
if (result != -1 || errno != ENOSYS)
|
||||
return result;
|
||||
|
||||
__set_errno (saved_errno);
|
||||
|
@ -35,6 +35,7 @@
|
||||
|
||||
/* Linux/SPARC uses a different trap number */
|
||||
#undef PSEUDO
|
||||
#undef PSEUDO_NOERRNO
|
||||
#undef ENTRY
|
||||
|
||||
#define ENTRY(name) \
|
||||
@ -101,10 +102,20 @@ SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler) \
|
||||
nop; \
|
||||
SYSCALL_ERROR_HANDLER
|
||||
|
||||
#define PSEUDO_NOERRNO(name, syscall_name, args) \
|
||||
.text; \
|
||||
ENTRY(name); \
|
||||
LOADSYSCALL(syscall_name); \
|
||||
ta 0x6d
|
||||
|
||||
#undef PSEUDO_END
|
||||
#define PSEUDO_END(name) \
|
||||
.size name,.-name
|
||||
|
||||
#undef PSEUDO_END_NOERRNO
|
||||
#define PSEUDO_END_NOERRNO(name) \
|
||||
.size name,.-name
|
||||
|
||||
#undef END
|
||||
#define END(name) \
|
||||
.size name,.-name
|
||||
|
Loading…
Reference in New Issue
Block a user