From 17bfa18679b9a9435903c9b0dd2700b3d8408b7e Mon Sep 17 00:00:00 2001 From: Juha Niskanen Date: Mon, 13 Sep 2021 14:53:50 +0300 Subject: [PATCH] libc/unistd: getopt: add some NULL pointer checks Signed-off-by: Juha Niskanen --- libs/libc/unistd/lib_getopt_common.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libs/libc/unistd/lib_getopt_common.c b/libs/libc/unistd/lib_getopt_common.c index cd9e481260..c84d9a6550 100644 --- a/libs/libc/unistd/lib_getopt_common.c +++ b/libs/libc/unistd/lib_getopt_common.c @@ -24,6 +24,7 @@ #include +#include #include #include @@ -514,7 +515,7 @@ int getopt_common(int argc, FAR char * const argv[], * not think that the first interpretation is standard. */ - else if (*(go->go_optptr + 1) != '\0') + else if (go->go_optptr == NULL || go->go_optptr[1] != '\0') { /* Skip over the unrecognized long option. */ @@ -542,6 +543,8 @@ int getopt_common(int argc, FAR char * const argv[], * (which could be another single character command). */ + DEBUGASSERT(go->go_optptr != NULL); + go->go_optopt = *go->go_optptr; go->go_optptr = NULL; go->go_optind++; @@ -570,6 +573,8 @@ int getopt_common(int argc, FAR char * const argv[], /* Check if the option appears in 'optstring' */ + DEBUGASSERT(go->go_optptr != NULL); + optchar = strchr(optstring, *go->go_optptr); if (!optchar) {