From 5148d49f37ad2648ef77159b0b2d1b332c584ed9 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 21 Aug 1998 17:22:56 +0000 Subject: [PATCH] Update. 1998-08-21 17:21 Ulrich Drepper * sysdeps/unix/sysv/linux/glob64.c: Define __stat using __xstat64. 1998-08-20 Andreas Schwab * Makefile (elf/ldso_install): Put back. The problem still persists. * elf/Makefile (ldso_install): Likewise. 1998-08-20 Andreas Schwab * db2/db/db.c (db_open) [_LIBC]: Rename to __nss_db_open and create weak alias. * include/db.h: Declare __nss_db_open. * db2/Versions: Export it. * db2/makedb.c: Convert to use db2 API. * nss/nss_db/db-XXX.c: Likewise. * nss/nss_db/db-netgrp.c: Likewise. * nss/nss_db/db-alias.c: Likewise. (_nss_db_getaliasent_r): Allow retrying with a larger buffer. 1998-08-19 Andreas Schwab * sysdeps/unix/sysv/linux/Makefile (sysdep_routines): Remove sys_setresuid, already built automatically (or not). * sysdeps/unix/sysv/linux/syscalls.list: Define __setresuid instead of __syscall_setresuid and add back setresuid. * sysdeps/unix/sysv/linux/seteuid.c: Use __setresuid instead of __syscall_setresuid. 1998-08-21 Andreas Jaeger * sysdeps/unix/sysv/linux/sys/mount.h: Fix typo. * libio/libioP.c (FILEBUF_LITERAL): Also initialize new _offset --- ChangeLog | 37 +++++++++++++++++- FAQ | 12 ++++++ FAQ.in | 9 +++++ Makefile | 7 ++++ db2/Versions | 3 ++ db2/db/db.c | 10 +++++ db2/makedb.c | 53 +++++++++++++++---------- elf/Makefile | 4 ++ include/db.h | 4 ++ nss/nss_db/db-XXX.c | 56 ++++++++++++++++++--------- nss/nss_db/db-alias.c | 44 +++++++++++++++------ nss/nss_db/db-netgrp.c | 33 +++++++++++----- sysdeps/unix/sysv/linux/Makefile | 3 +- sysdeps/unix/sysv/linux/glob64.c | 2 +- sysdeps/unix/sysv/linux/seteuid.c | 4 +- sysdeps/unix/sysv/linux/sys/mount.h | 2 +- sysdeps/unix/sysv/linux/syscalls.list | 2 +- 17 files changed, 217 insertions(+), 68 deletions(-) diff --git a/ChangeLog b/ChangeLog index 177deda9e8..53b4b44067 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,38 @@ +1998-08-21 17:21 Ulrich Drepper + + * sysdeps/unix/sysv/linux/glob64.c: Define __stat using __xstat64. + +1998-08-20 Andreas Schwab + + * Makefile (elf/ldso_install): Put back. The problem still persists. + * elf/Makefile (ldso_install): Likewise. + +1998-08-20 Andreas Schwab + + * db2/db/db.c (db_open) [_LIBC]: Rename to __nss_db_open and + create weak alias. + * include/db.h: Declare __nss_db_open. + * db2/Versions: Export it. + + * db2/makedb.c: Convert to use db2 API. + * nss/nss_db/db-XXX.c: Likewise. + * nss/nss_db/db-netgrp.c: Likewise. + * nss/nss_db/db-alias.c: Likewise. + (_nss_db_getaliasent_r): Allow retrying with a larger buffer. + +1998-08-19 Andreas Schwab + + * sysdeps/unix/sysv/linux/Makefile (sysdep_routines): Remove + sys_setresuid, already built automatically (or not). + * sysdeps/unix/sysv/linux/syscalls.list: Define __setresuid + instead of __syscall_setresuid and add back setresuid. + * sysdeps/unix/sysv/linux/seteuid.c: Use __setresuid instead of + __syscall_setresuid. + +1998-08-21 Andreas Jaeger + + * sysdeps/unix/sysv/linux/sys/mount.h: Fix typo. + 1998-08-20 Ulrich Drepper * elf/Makefile (sh-ldd-rewrite): Remove expression to remove @@ -11,7 +46,7 @@ * libio/iolibio.h (_IO_pos_BAD): Define of type _IO_fpos64_t. - * libio/oldfileops.c (FILEBUF_LITERAL): Also initialize new _offset + * libio/libioP.c (FILEBUF_LITERAL): Also initialize new _offset element. 1998-08-21 Roland McGrath diff --git a/FAQ b/FAQ index 5b8f2050a6..a345194167 100644 --- a/FAQ +++ b/FAQ @@ -118,6 +118,8 @@ please let me know. 3.13. When using the db-2 library which comes with glibc is used in the Perl db modules the testsuite is not passed. This did not happen with db-1, gdbm, or ndbm. +3.14. The pow() inline function I get when including is broken. + I get segmentation faults when I run the program. 4. Miscellaneous @@ -1178,6 +1180,16 @@ Paul Marquess acknowledged this change and fixed the testsuite so that if you use DB_File v1.60 or later you should not have any more problems with db-2. + +3.14. The pow() inline function I get when including is broken. + I get segmentation faults when I run the program. + +{UD} Nope, the implementation is correct. The problem is with egcs version +prior to 1.1. I.e., egcs 1.0 to 1.0.3 are all broken (at least on Intel). +If you have to use this compiler you must define __NO_MATH_INLINES before +including to prevent the inline functions from being used. egcs 1.1 +fixes the problem. I don't know about gcc 2.8 and 2.8.1. + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . diff --git a/FAQ.in b/FAQ.in index c4bafc0c55..1bb7bb2a27 100644 --- a/FAQ.in +++ b/FAQ.in @@ -1012,6 +1012,15 @@ Paul Marquess acknowledged this change and fixed the testsuite so that if you use DB_File v1.60 or later you should not have any more problems with db-2. +?? The pow() inline function I get when including is broken. + I get segmentation faults when I run the program. + +{UD} Nope, the implementation is correct. The problem is with egcs version +prior to 1.1. I.e., egcs 1.0 to 1.0.3 are all broken (at least on Intel). +If you have to use this compiler you must define __NO_MATH_INLINES before +including to prevent the inline functions from being used. egcs 1.1 +fixes the problem. I don't know about gcc 2.8 and 2.8.1. + ? Miscellaneous diff --git a/Makefile b/Makefile index 14355f0b04..45c905820e 100644 --- a/Makefile +++ b/Makefile @@ -86,6 +86,13 @@ endif # Install from subdirectories too. install: subdir_install +# Make sure that the dynamic linker is installed before libc. +$(inst_slibdir)/libc-$(version).so: elf/ldso_install + +.PHONY: elf/ldso_install +elf/ldso_install: + $(MAKE) -C $(@D) $(@F) + # Create links for shared libraries using the `ldconfig' program is possible. # Ignore the error if we cannot update /etc/ld.so.cache. ifeq (no,$(cross-compiling)) diff --git a/db2/Versions b/db2/Versions index c7821c0337..af8558daec 100644 --- a/db2/Versions +++ b/db2/Versions @@ -20,6 +20,9 @@ libdb { __memp_dump_region; __txn_init_print; + # Functions used by other libraries. + __nss_db_open; + # Constants db_rw_conflicts; db_riw_conflicts; diff --git a/db2/db/db.c b/db2/db/db.c index 9951ebd944..755b34b1bf 100644 --- a/db2/db/db.c +++ b/db2/db/db.c @@ -87,6 +87,11 @@ static int db_fd __P((DB *, int *)); } \ } +#ifdef _LIBC +#define db_open(fname, type, flags, mode, dbenv, dbinfo, dbpp) \ + __nss_db_open(fname, type, flags, mode, dbenv, dbinfo, dbpp) +#endif + /* * db_open -- * Main library interface to the DB access methods. @@ -691,6 +696,11 @@ err: /* Close the file descriptor. */ return (ret); } +#ifdef _LIBC +# undef db_open +weak_alias (__nss_db_open, db_open) +#endif + /* * db_close -- * Close a DB tree. diff --git a/db2/makedb.c b/db2/makedb.c index d20befc053..f50b3b09b2 100644 --- a/db2/makedb.c +++ b/db2/makedb.c @@ -20,7 +20,7 @@ #include #include -#include +#include #include #include #include @@ -140,16 +140,17 @@ main (argc, argv) /* Special handling if we are asked to print the database. */ if (do_undo) { - db_file = dbopen (input_name, O_RDONLY, 0666, DB_BTREE, NULL); - if (db_file == NULL) + status = db_open (input_name, DB_BTREE, DB_RDONLY, 0666, NULL, NULL, + &db_file); + if (status != 0) error (EXIT_FAILURE, 0, gettext ("cannot open database file `%s': %s"), input_name, - errno == EINVAL ? gettext ("incorrectly formatted file") - : strerror (errno)); + (status == EINVAL ? gettext ("incorrectly formatted file") + : strerror (status))); status = print_database (db_file); - db_file->close (db_file); + db_file->close (db_file, 0); return status; } @@ -174,10 +175,10 @@ main (argc, argv) /* Open output file. This must not be standard output so we don't handle "-" and "/dev/stdout" special. */ - db_file = dbopen (output_name, O_CREAT | O_RDWR | O_TRUNC, mode, - DB_BTREE, NULL); - if (db_file == NULL) - error (EXIT_FAILURE, errno, gettext ("cannot open output file `%s'"), + status = db_open (output_name, DB_BTREE, DB_CREATE | DB_TRUNCATE, mode, + NULL, NULL, &db_file); + if (status != 0) + error (EXIT_FAILURE, status, gettext ("cannot open output file `%s'"), output_name); /* Start the real work. */ @@ -187,7 +188,7 @@ main (argc, argv) /* Close files. */ if (input_file != stdin) fclose (input_file); - db_file->close (db_file); + db_file->close (db_file, 0); return status; } @@ -307,18 +308,20 @@ process_input (input, inname, output, to_lowercase, be_quiet) continue; key.size = cp - (char *) key.data; + key.flags = 0; while (isspace (*cp)) ++cp; val.data = cp; val.size = (&line[n] - cp) + 1; + val.flags = 0; /* Store the value. */ - status = output->put (output, &key, &val, R_NOOVERWRITE); + status = output->put (output, NULL, &key, &val, DB_NOOVERWRITE); if (status != 0) { - if (status == 1) + if (status == DB_KEYEXIST) { if (!be_quiet) error_at_line (0, 0, inname, linenr, @@ -328,7 +331,7 @@ process_input (input, inname, output, to_lowercase, be_quiet) continue; } else - error (0, errno, gettext ("while writing database file")); + error (0, status, gettext ("while writing database file")); status = EXIT_FAILURE; @@ -353,20 +356,30 @@ print_database (db) { DBT key; DBT val; - int no_more; + DBC *cursor; + int status; - no_more = db->seq (db, &key, &val, R_FIRST); - while (!no_more) + status = db->cursor (db, NULL, &cursor); + if (status != 0) + { + error (0, status, gettext ("while reading database")); + return EXIT_FAILURE; + } + + key.flags = 0; + val.flags = 0; + status = cursor->c_get (cursor, &key, &val, DB_FIRST); + while (status == 0) { printf ("%.*s %s\n", (int) key.size, (char *) key.data, (char *) val.data); - no_more = db->seq (db, &key, &val, R_NEXT); + status = cursor->c_get (cursor, &key, &val, DB_NEXT); } - if (no_more == -1) + if (status != DB_NOTFOUND) { - error (0, errno, gettext ("while reading database")); + error (0, status, gettext ("while reading database")); return EXIT_FAILURE; } diff --git a/elf/Makefile b/elf/Makefile index 5cc13b2bc0..d452ee7a06 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -163,6 +163,10 @@ $(inst_slibdir)/$(rtld-installed-name): \ $(inst_slibdir)/$(rtld-version-installed-name) $(make-shlib-link) +# Special target called by parent to install just the dynamic linker. +.PHONY: ldso_install +ldso_install: $(inst_slibdir)/$(rtld-installed-name) + common-ldd-rewrite = -e 's%@RTLD@%$(slibdir)/$(rtld-installed-name)%g' \ -e 's%@VERSION@%$(version)%g' diff --git a/include/db.h b/include/db.h index 61e23a0b66..13e9c307eb 100644 --- a/include/db.h +++ b/include/db.h @@ -1 +1,5 @@ #include + +/* Internal interface for NSS. */ +int __nss_db_open __P((const char *, + DBTYPE, u_int32_t, int, DB_ENV *, DB_INFO *, DB **)); diff --git a/nss/nss_db/db-XXX.c b/nss/nss_db/db-XXX.c index 3839940028..8ba73efcb6 100644 --- a/nss/nss_db/db-XXX.c +++ b/nss/nss_db/db-XXX.c @@ -17,7 +17,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include +#include #include #include #include "nsswitch.h" @@ -60,29 +60,41 @@ static enum nss_status internal_setent (int stayopen) { enum nss_status status = NSS_STATUS_SUCCESS; + int err; if (db == NULL) { - db = __dbopen (DBFILE, O_RDONLY, 0, DB_BTREE, NULL); + err = __nss_db_open (DBFILE, DB_BTREE, DB_RDONLY, 0, NULL, NULL, &db); - if (db == NULL) - status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL; + if (err != 0) + { + __set_errno (err); + status = err == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL; + } else { /* We have to make sure the file is `closed on exec'. */ + int fd; int result, flags; - result = flags = fcntl ((*db->fd) (db), F_GETFD, 0); + err = db->fd (db, &fd); + if (err != 0) + { + __set_errno (err); + result = -1; + } + else + result = flags = fcntl (fd, F_GETFD, 0); if (result >= 0) { flags |= FD_CLOEXEC; - result = fcntl ((*db->fd) (db), F_SETFD, flags); + result = fcntl (fd, F_SETFD, flags); } if (result < 0) { /* Something went wrong. Close the stream and return a failure. */ - (*db->close) (db); + db->close (db, 0); db = NULL; status = NSS_STATUS_UNAVAIL; } @@ -122,7 +134,7 @@ internal_endent (void) { if (db != NULL) { - (*db->close) (db); + db->close (db, 0); db = NULL; } } @@ -146,7 +158,7 @@ CONCAT(_nss_db_end,ENTNAME) (void) /* Do a database lookup for KEY. */ static enum nss_status -lookup (const DBT *key, struct STRUCTURE *result, +lookup (DBT *key, struct STRUCTURE *result, void *buffer, size_t buflen, int *errnop H_ERRNO_PROTO) { char *p; @@ -164,17 +176,21 @@ lookup (const DBT *key, struct STRUCTURE *result, } /* Succeed iff it matches a value that parses correctly. */ - err = (*db->get) (db, key, &value, 0); - if (err < 0) + value.flags = 0; + err = db->get (db, NULL, key, &value, 0); + if (err != 0) { - *errnop = errno; - H_ERRNO_SET (NETDB_INTERNAL); - status = NSS_STATUS_UNAVAIL; - } - else if (err != 0) - { - H_ERRNO_SET (HOST_NOT_FOUND); - status = NSS_STATUS_NOTFOUND; + if (err == DB_NOTFOUND) + { + H_ERRNO_SET (HOST_NOT_FOUND); + status = NSS_STATUS_NOTFOUND; + } + else + { + *errnop = err; + H_ERRNO_SET (NETDB_INTERNAL); + status = NSS_STATUS_UNAVAIL; + } } else if (buflen < value.size) { @@ -253,6 +269,7 @@ _nss_db_get##name##_r (proto, \ const size_t size = (keysize) + 1; \ key.data = __alloca (size); \ key.size = KEYPRINTF keypattern; \ + key.flags = 0; \ __libc_lock_lock (lock); \ status = lookup (&key, result, buffer, buflen, errnop H_ERRNO_ARG); \ __libc_lock_unlock (lock); \ @@ -281,6 +298,7 @@ CONCAT(_nss_db_get,ENTNAME_r) (struct STRUCTURE *result, char *buffer, do { key.size = snprintf (key.data = buf, sizeof buf, "0%u", entidx++); + key.flags = 0; status = lookup (&key, result, buffer, buflen, errnop H_ERRNO_ARG); if (status == NSS_STATUS_TRYAGAIN #ifdef NEED_H_ERRNO diff --git a/nss/nss_db/db-alias.c b/nss/nss_db/db-alias.c index 27b7952b30..81037ed5f7 100644 --- a/nss/nss_db/db-alias.c +++ b/nss/nss_db/db-alias.c @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include #include #include @@ -44,29 +44,42 @@ static enum nss_status internal_setent (int stayopen) { enum nss_status status = NSS_STATUS_SUCCESS; + int err; if (db == NULL) { - db = __dbopen (_PATH_VARDB "aliases.db", O_RDONLY, 0, DB_BTREE, NULL); + err = __nss_db_open (_PATH_VARDB "aliases.db", DB_BTREE, DB_RDONLY, 0, + NULL, NULL, &db); - if (db == NULL) - status = NSS_STATUS_UNAVAIL; + if (err != 0) + { + __set_errno (err); + status = NSS_STATUS_UNAVAIL; + } else { /* We have to make sure the file is `closed on exec'. */ + int fd; int result, flags; - result = flags = fcntl ((*db->fd) (db), F_GETFD, 0); + err = db->fd (db, &fd); + if (err != 0) + { + __set_errno (err); + result = -1; + } + else + result = flags = fcntl (fd, F_GETFD, 0); if (result >= 0) { flags |= FD_CLOEXEC; - result = fcntl ((*db->fd) (db), F_SETFD, flags); + result = fcntl (fd, F_SETFD, flags); } if (result < 0) { /* Something went wrong. Close the stream and return a failure. */ - (*db->close) (db); + db->close (db, 0); db = NULL; status = NSS_STATUS_UNAVAIL; } @@ -106,7 +119,7 @@ internal_endent (void) { if (db != NULL) { - (*db->close) (db); + db->close (db, 0); db = NULL; } } @@ -133,7 +146,7 @@ _nss_db_endaliasent (void) :include: statements so we simply have to parse the list and store the result. */ static enum nss_status -lookup (const DBT *key, struct aliasent *result, char *buffer, +lookup (DBT *key, struct aliasent *result, char *buffer, size_t buflen, int *errnop) { enum nss_status status; @@ -142,9 +155,13 @@ lookup (const DBT *key, struct aliasent *result, char *buffer, /* Open the database. */ status = internal_setent (keep_db); if (status != NSS_STATUS_SUCCESS) - return status; + { + *errnop = errno; + return status; + } - if ((*db->get) (db, key, &value, 0) == 0) + value.flags = 0; + if (db->get (db, NULL, key, &value, 0) == 0) { const char *src = value.data; @@ -228,7 +245,11 @@ _nss_db_getaliasent_r (struct aliasent *result, char *buffer, size_t buflen, __libc_lock_lock (lock); key.size = snprintf (key.data = buf, sizeof buf, "0%u", entidx++); + key.flags = 0; status = lookup (&key, result, buffer, buflen, errnop); + if (status == NSS_STATUS_TRYAGAIN && *errnop == ERANGE) + /* Give the user a chance to get the same entry with a larger buffer. */ + --entidx; __libc_lock_unlock (lock); return status; @@ -247,6 +268,7 @@ _nss_db_getaliasbyname_r (const char *name, struct aliasent *result, key.data = __alloca (key.size); ((char *) key.data)[0] = '.'; memcpy (&((char *) key.data)[1], name, key.size - 1); + key.flags = 0; __libc_lock_lock (lock); status = lookup (&key, result, buffer, buflen, errnop); diff --git a/nss/nss_db/db-netgrp.c b/nss/nss_db/db-netgrp.c index d63d1cb1af..8707d85f04 100644 --- a/nss/nss_db/db-netgrp.c +++ b/nss/nss_db/db-netgrp.c @@ -18,7 +18,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include +#include #include #include #include @@ -43,32 +43,44 @@ enum nss_status _nss_db_setnetgrent (const char *group) { enum nss_status status = NSS_STATUS_SUCCESS; + int err; __libc_lock_lock (lock); /* Make sure the data base file is open. */ if (db == NULL) { - db = __dbopen (DBFILE, O_RDONLY, 0, DB_BTREE, NULL); + err = __nss_db_open (DBFILE, DB_BTREE, O_RDONLY, 0, NULL, NULL, &db); - if (db == NULL) - status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL; + if (err != 0) + { + __set_errno (err); + status = err == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL; + } else { /* We have to make sure the file is `closed on exec'. */ + int fd; int result, flags; - result = flags = fcntl ((*db->fd) (db), F_GETFD, 0); + err = db->fd (db, &fd); + if (err != 0) + { + __set_errno (err); + result = -1; + } + else + result = flags = fcntl (fd, F_GETFD, 0); if (result >= 0) { flags |= FD_CLOEXEC; - result = fcntl ((*db->fd) (db), F_SETFD, flags); + result = fcntl (fd, F_SETFD, flags); } if (result < 0) { /* Something went wrong. Close the stream and return a failure. */ - (*db->close) (db); + db->close (db, 0); db = NULL; status = NSS_STATUS_UNAVAIL; } @@ -77,10 +89,11 @@ _nss_db_setnetgrent (const char *group) if (status == NSS_STATUS_SUCCESS) { - DBT key = { data: (void *) group, size: strlen (group) }; + DBT key = { data: (void *) group, size: strlen (group), flags: 0 }; DBT value; - if ((*db->get) (db, &key, &value, 0) != 0) + value.flags = 0; + if (db->get (db, NULL, &key, &value, 0) != 0) status = NSS_STATUS_NOTFOUND; else cursor = entry = value.data; @@ -100,7 +113,7 @@ _nss_db_endnetgrent (void) if (db != NULL) { - (*db->close) (db); + db->close (db, 0); db = NULL; } diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile index ffd446d9f8..dd8db415b3 100644 --- a/sysdeps/unix/sysv/linux/Makefile +++ b/sysdeps/unix/sysv/linux/Makefile @@ -9,8 +9,7 @@ CPPFLAGS += -DHAVE_LLSEEK=1 endif ifeq ($(subdir),misc) -sysdep_routines += sysctl clone llseek getresuid getresgid sys_setresuid \ - umount umount2 +sysdep_routines += sysctl clone llseek getresuid getresgid umount umount2 sysdep_headers += sys/mount.h sys/acct.h sys/sysctl.h sys/mtio.h \ sys/io.h sys/klog.h sys/kdaemon.h \ diff --git a/sysdeps/unix/sysv/linux/glob64.c b/sysdeps/unix/sysv/linux/glob64.c index e5c506b435..7fb4654b8b 100644 --- a/sysdeps/unix/sysv/linux/glob64.c +++ b/sysdeps/unix/sysv/linux/glob64.c @@ -13,7 +13,7 @@ #undef stat #define stat stat64 #undef __stat -#define __stat(file, buf) stat64 (file, buf) +#define __stat(file, buf) __xstat64 (_STAT_VER, file, buf) #define NO_GLOB_PATTERN_P 1 diff --git a/sysdeps/unix/sysv/linux/seteuid.c b/sysdeps/unix/sysv/linux/seteuid.c index c8e3950cfa..20840dbfc0 100644 --- a/sysdeps/unix/sysv/linux/seteuid.c +++ b/sysdeps/unix/sysv/linux/seteuid.c @@ -23,7 +23,7 @@ #ifdef __NR_setresuid -extern int __syscall_setresuid (uid_t ruid, uid_t euid, uid_t suid); +extern int __setresuid (uid_t ruid, uid_t euid, uid_t suid); int seteuid (uid_t uid) @@ -37,7 +37,7 @@ seteuid (uid_t uid) } /* First try the syscall. */ - result = __syscall_setresuid (-1, uid, -1); + result = __setresuid (-1, uid, -1); if (result == -1 && errno == ENOSYS) /* No system call available. Use emulation. This may not work since `setreuid' also sets the saved user ID when UID is not diff --git a/sysdeps/unix/sysv/linux/sys/mount.h b/sysdeps/unix/sysv/linux/sys/mount.h index 4b7154928c..f29d158fb5 100644 --- a/sysdeps/unix/sysv/linux/sys/mount.h +++ b/sysdeps/unix/sysv/linux/sys/mount.h @@ -96,7 +96,7 @@ extern int mount __P ((__const char *__special_file, __const char *__dir, /* Unmount a filesystem. */ extern int umount __P ((__const char *__special_file)); -/* Unmount a filesystem. Forst unmounting if FALGS is set to MNT_FORCE. */ +/* Unmount a filesystem. Force unmounting if FLAGS is set to MNT_FORCE. */ extern int umount2 __P ((__const char *__special_file, int __flags)); __END_DECLS diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list index 54b210d728..8880035ed4 100644 --- a/sysdeps/unix/sysv/linux/syscalls.list +++ b/sysdeps/unix/sysv/linux/syscalls.list @@ -71,13 +71,13 @@ sendfile EXTRA sendfile 4 sendfile setfsgid EXTRA setfsgid 1 setfsgid setfsuid EXTRA setfsuid 1 setfsuid setpgid - setpgid 2 __setpgid setpgid +setresuid EXTRA setresuid 3 __setresuid setresuid setresgid EXTRA setresgid 3 setresgid sigaltstack - sigaltstack 2 __sigaltstack sigaltstack sys_fstat fxstat fstat 2 __syscall_fstat sys_lstat lxstat lstat 2 __syscall_lstat sys_mknod xmknod mknod 3 __syscall_mknod sys_readv readv readv 3 __syscall_readv -sys_setresuid EXTRA setresuid 3 __syscall_setresuid sys_stat xstat stat 2 __syscall_stat sys_writev writev writev 3 __syscall_writev sysinfo EXTRA sysinfo 1 sysinfo