diff --git a/libs/libc/unistd/lib_getopt_common.c b/libs/libc/unistd/lib_getopt_common.c index cd9e481260d..c84d9a65504 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) {