diff options
author | Todd C. Miller <millert@cvs.openbsd.org> | 2002-12-08 17:52:27 +0000 |
---|---|---|
committer | Todd C. Miller <millert@cvs.openbsd.org> | 2002-12-08 17:52:27 +0000 |
commit | 5b888a4d430d11f02bafddf08d468c86d7cacf81 (patch) | |
tree | a43291f0c17e98806db64b8e66aaae932d849f65 /lib/libc | |
parent | 7a708337923db2bb6e32ea6a0ccc8e0d2429eaad (diff) |
SUS (and apparently 1003.1-2001) say to check optstring for NULL
Diffstat (limited to 'lib/libc')
-rw-r--r-- | lib/libc/stdlib/getopt.c | 5 | ||||
-rw-r--r-- | lib/libc/stdlib/getopt_long.c | 8 |
2 files changed, 9 insertions, 4 deletions
diff --git a/lib/libc/stdlib/getopt.c b/lib/libc/stdlib/getopt.c index b7f61636623..218887dd32f 100644 --- a/lib/libc/stdlib/getopt.c +++ b/lib/libc/stdlib/getopt.c @@ -32,7 +32,7 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static char *rcsid = "$OpenBSD: getopt.c,v 1.2 1996/08/19 08:33:32 tholo Exp $"; +static char *rcsid = "$OpenBSD: getopt.c,v 1.3 2002/12/08 17:52:26 millert Exp $"; #endif /* LIBC_SCCS and not lint */ #include <stdio.h> @@ -63,6 +63,9 @@ getopt(nargc, nargv, ostr) static char *place = EMSG; /* option letter processing */ char *oli; /* option letter list index */ + if (options == NULL) + return (-1); + if (optreset || !*place) { /* update scanning pointer */ optreset = 0; if (optind >= nargc || *(place = nargv[optind]) != '-') { diff --git a/lib/libc/stdlib/getopt_long.c b/lib/libc/stdlib/getopt_long.c index 176ba25bb7d..413ec24f4e4 100644 --- a/lib/libc/stdlib/getopt_long.c +++ b/lib/libc/stdlib/getopt_long.c @@ -1,4 +1,4 @@ -/* $OpenBSD: getopt_long.c,v 1.9 2002/12/08 17:07:46 millert Exp $ */ +/* $OpenBSD: getopt_long.c,v 1.10 2002/12/08 17:52:26 millert Exp $ */ /* $NetBSD: getopt_long.c,v 1.15 2002/01/31 22:43:40 tv Exp $ */ /* @@ -64,7 +64,7 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static char *rcsid = "$OpenBSD: getopt_long.c,v 1.9 2002/12/08 17:07:46 millert Exp $"; +static char *rcsid = "$OpenBSD: getopt_long.c,v 1.10 2002/12/08 17:52:26 millert Exp $"; #endif /* LIBC_SCCS and not lint */ #include <err.h> @@ -301,7 +301,8 @@ getopt_internal(int nargc, char * const *nargv, const char *options, int optchar, short_too; static int posixly_correct = -1; - optarg = NULL; + if (options == NULL) + return (-1); /* * Disable GNU extensions if POSIXLY_CORRECT is set or options @@ -323,6 +324,7 @@ getopt_internal(int nargc, char * const *nargv, const char *options, if (optind == 0) optind = optreset = 1; + optarg = NULL; if (optreset) nonopt_start = nonopt_end = -1; start: |