diff options
-rw-r--r-- | inet/inet_net.c | 2 | ||||
-rw-r--r-- | posix/getopt.c | 30 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/shmctl.c | 7 |
3 files changed, 22 insertions, 17 deletions
diff --git a/inet/inet_net.c b/inet/inet_net.c index 78d22cd..e9331c5 100644 --- a/inet/inet_net.c +++ b/inet/inet_net.c @@ -83,6 +83,8 @@ again: } if (*cp && !isspace(*cp)) return (INADDR_NONE); + if (pp >= parts + 4 || val > 0xff) + return (INADDR_NONE); *pp++ = val; n = pp - parts; for (val = 0, i = 0; i < n; i++) { diff --git a/posix/getopt.c b/posix/getopt.c index efd8223..4744e43 100644 --- a/posix/getopt.c +++ b/posix/getopt.c @@ -3,7 +3,7 @@ "Keep this file name-space clean" means, talk to drepper@gnu.org before changing it! - Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99 + Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc. The GNU C Library is free software; you can redistribute it and/or @@ -517,6 +517,10 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) int *longind; int long_only; { + int print_errors = opterr; + if (optstring[0] == ':') + print_errors = 0; + optarg = NULL; if (optind == 0 || !__getopt_initialized) @@ -673,7 +677,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) if (ambig && !exact) { - if (opterr) + if (print_errors) fprintf (stderr, _("%s: option `%s' is ambiguous\n"), argv[0], argv[optind]); nextchar += strlen (nextchar); @@ -694,7 +698,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) optarg = nameend + 1; else { - if (opterr) + if (print_errors) { if (argv[optind - 1][1] == '-') /* --option */ @@ -720,7 +724,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) optarg = argv[optind++]; else { - if (opterr) + if (print_errors) fprintf (stderr, _("%s: option `%s' requires an argument\n"), argv[0], argv[optind - 1]); @@ -747,7 +751,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) if (!long_only || argv[optind][1] == '-' || my_index (optstring, *nextchar) == NULL) { - if (opterr) + if (print_errors) { if (argv[optind][1] == '-') /* --option */ @@ -777,7 +781,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) if (temp == NULL || c == ':') { - if (opterr) + if (print_errors) { if (posixly_correct) /* 1003.2 specifies the format of this message. */ @@ -811,7 +815,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) } else if (optind == argc) { - if (opterr) + if (print_errors) { /* 1003.2 specifies the format of this message. */ fprintf (stderr, _("%s: option requires an argument -- %c\n"), @@ -860,7 +864,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) } if (ambig && !exact) { - if (opterr) + if (print_errors) fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"), argv[0], argv[optind]); nextchar += strlen (nextchar); @@ -878,7 +882,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) optarg = nameend + 1; else { - if (opterr) + if (print_errors) fprintf (stderr, _("\ %s: option `-W %s' doesn't allow an argument\n"), argv[0], pfound->name); @@ -893,7 +897,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) optarg = argv[optind++]; else { - if (opterr) + if (print_errors) fprintf (stderr, _("%s: option `%s' requires an argument\n"), argv[0], argv[optind - 1]); @@ -940,12 +944,12 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only) } else if (optind == argc) { - if (opterr) + if (print_errors) { /* 1003.2 specifies the format of this message. */ fprintf (stderr, - _("%s: option requires an argument -- %c\n"), - argv[0], c); + _("%s: option requires an argument -- %c\n"), + argv[0], c); } optopt = c; if (optstring[0] == ':') diff --git a/sysdeps/unix/sysv/linux/i386/shmctl.c b/sysdeps/unix/sysv/linux/i386/shmctl.c index 0b68d78..9574161 100644 --- a/sysdeps/unix/sysv/linux/i386/shmctl.c +++ b/sysdeps/unix/sysv/linux/i386/shmctl.c @@ -90,6 +90,7 @@ __new_shmctl (int shmid, int cmd, struct shmid_ds *buf) { struct __old_shmid_ds old; + int result; # ifdef __NR_getuid32 if (__libc_missing_32bit_uids <= 0) @@ -107,10 +108,8 @@ __new_shmctl (int shmid, int cmd, struct shmid_ds *buf) __set_errno(save_errno); } if (__libc_missing_32bit_uids <= 0) - { - result = INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd | __IPC_64, 0, buf); - return result; - } + return INLINE_SYSCALL (ipc, 5, IPCOP_shmctl, shmid, cmd | __IPC_64, + 0, buf); } # endif |