From dc825f85f4795fc45f67eb27708d9adcc72c9b40 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Sun, 28 Jan 1996 22:47:31 +0000 Subject: Sun Jan 28 17:25:38 1996 Roland McGrath * setjmp/setjmp.h (jmp_buf): Give a tag in the struct defn, to make C++ happy. * alpha/jmp_buf.h: Likewise. * m68k/jmp_buf.h: Likewise. * mips/jmp_buf.h: Likewise. * sparc/jmp_buf.h: Likewise. * vax/jmp_buf.h: Likewise. Sun Jan 28 17:25:38 1996 Roland McGrath * setjmp/setjmp.h (jmp_buf): Give a tag in the struct defn, to make C++ happy. * alpha/jmp_buf.h: Likewise. * m68k/jmp_buf.h: Likewise. * mips/jmp_buf.h: Likewise. * sparc/jmp_buf.h: Likewise. * vax/jmp_buf.h: Likewise. * sysdeps/generic/memmem.c: Fix return value in case where NEEDLE_LEN==0. * hurd/hurdlookup.c (__file_name_lookup_under, __file_name_lookup): Restrict mode with umask. * sysdeps/mach/hurd/xmknod.c: Restrict mode with umask. * sysdeps/mach/hurd/mkdir.c: Restrict mode with umask. --- ChangeLog | 18 ++++++++++++++++++ hurd/hurdlookup.c | 6 +++--- setjmp/setjmp.h | 6 +++--- sysdeps/generic/memmem.c | 6 ++++-- sysdeps/mach/hurd/mkdir.c | 4 ++-- sysdeps/mach/hurd/xmknod.c | 2 +- 6 files changed, 31 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3d949d2cc2..41a3f70018 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,21 @@ +Sun Jan 28 17:25:38 1996 Roland McGrath + + * setjmp/setjmp.h (jmp_buf): Give a tag in the struct defn, to + make C++ happy. + * alpha/jmp_buf.h: Likewise. + * m68k/jmp_buf.h: Likewise. + * mips/jmp_buf.h: Likewise. + * sparc/jmp_buf.h: Likewise. + * vax/jmp_buf.h: Likewise. + + * sysdeps/generic/memmem.c: Fix return value in case where + NEEDLE_LEN==0. + + * hurd/hurdlookup.c (__file_name_lookup_under, + __file_name_lookup): Restrict mode with umask. + * sysdeps/mach/hurd/xmknod.c: Restrict mode with umask. + * sysdeps/mach/hurd/mkdir.c: Restrict mode with umask. + Fri Jan 26 12:20:45 1996 Roland McGrath * stdlib/strtol.c: Undo last change. ANSI C changed since the diff --git a/hurd/hurdlookup.c b/hurd/hurdlookup.c index 05ed03833c..227f20e274 100644 --- a/hurd/hurdlookup.c +++ b/hurd/hurdlookup.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc. +/* Copyright (C) 1992, 1993, 1994, 1995, 1996 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 @@ -352,7 +352,7 @@ __file_name_lookup (const char *file_name, int flags, mode_t mode) file_t result; err = __hurd_file_name_lookup (&_hurd_ports_use, &__getdport, - file_name, flags, mode, + file_name, flags, mode & ~_hurd_umask, &result); return err ? (__hurd_fail (err), MACH_PORT_NULL) : result; @@ -388,7 +388,7 @@ __file_name_lookup_under (file_t startdir, } err = __hurd_file_name_lookup (&use_init_port, &__getdport, - file_name, flags, mode, + file_name, flags, mode & ~_hurd_umask, &result); return err ? (__hurd_fail (err), MACH_PORT_NULL) : result; diff --git a/setjmp/setjmp.h b/setjmp/setjmp.h index 479cf973ec..12b05f1033 100644 --- a/setjmp/setjmp.h +++ b/setjmp/setjmp.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc. +/* Copyright (C) 1991, 92, 93, 94, 95, 96 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 @@ -32,7 +32,7 @@ __BEGIN_DECLS #include /* Get `__sigset_t'. */ /* Calling environment, plus possibly a saved signal mask. */ -typedef struct +typedef struct __jmp_buf /* C++ doesn't like tagless structs. */ { /* NOTE: The machine-dependent definitions of `__sigsetjmp' assume that a `jmp_buf' begins with a `__jmp_buf'. @@ -54,7 +54,7 @@ extern int __sigsetjmp __P ((jmp_buf __env, int __savemask)); The ANSI C standard says `setjmp' is a macro. */ #define setjmp(env) __sigsetjmp ((env), 0) #else -/* We are in 4.3 BSD-compatibility mode in which `setjmp' +/* We are in 4.3 BSD-compatibility mode in which `setjmp' saves the signal mask like `sigsetjmp (ENV, 1)'. */ #define setjmp(env) __sigsetjmp ((env), 1) #endif /* Favor BSD. */ diff --git a/sysdeps/generic/memmem.c b/sysdeps/generic/memmem.c index 79b4544db5..099897ab80 100644 --- a/sysdeps/generic/memmem.c +++ b/sysdeps/generic/memmem.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1992, 1993, 1994 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1992, 1993, 1994, 1996 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 @@ -33,7 +33,9 @@ DEFUN(memmem, (haystack, haystack_len, = (CONST char *) haystack + haystack_len - needle_len; if (needle_len == 0) - return (PTR) &((CONST char *) haystack)[needle_len - 1]; + /* The first occurrence of the empty string is deemed to occur at + the end of the string. */ + return (PTR) &((CONST char *) haystack)[haystack_len - 1]; for (begin = (CONST char *) haystack; begin <= last_possible; ++begin) if (begin[0] == ((CONST char *) needle)[0] && diff --git a/sysdeps/mach/hurd/mkdir.c b/sysdeps/mach/hurd/mkdir.c index d477815994..560f5e0a3d 100644 --- a/sysdeps/mach/hurd/mkdir.c +++ b/sysdeps/mach/hurd/mkdir.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1993, 1994, 1995, 1996 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 @@ -31,7 +31,7 @@ DEFUN(__mkdir, (file_name, mode), CONST char *file_name AND mode_t mode) file_t parent = __file_name_split (file_name, (char **) &name); if (parent == MACH_PORT_NULL) return -1; - err = __dir_mkdir (parent, name, mode); + err = __dir_mkdir (parent, name, mode & ~_hurd_umask); __mach_port_deallocate (__mach_task_self (), parent); if (err) return __hurd_fail (err); diff --git a/sysdeps/mach/hurd/xmknod.c b/sysdeps/mach/hurd/xmknod.c index 68fb2249b2..b2386d80ee 100644 --- a/sysdeps/mach/hurd/xmknod.c +++ b/sysdeps/mach/hurd/xmknod.c @@ -90,7 +90,7 @@ __xmknod (int vers, const char *file_name, mode_t mode, dev_t *dev) return -1; /* Create a new, unlinked node in the target directory. */ - err = __dir_mkfile (dir, O_WRITE, mode & ~S_IFMT & _hurd_umask, &node); + err = __dir_mkfile (dir, O_WRITE, (mode & ~S_IFMT) & ~_hurd_umask, &node); if (! err) /* Set the node's translator to make it a device. */ -- cgit v1.2.3