Skip to content

Commit 18fcb1a

Browse files
committed
Force NULL-values in optarg to bail as error
1 parent ddd50bd commit 18fcb1a

1 file changed

Lines changed: 12 additions & 4 deletions

File tree

CommandLine.c

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,9 @@ static CommandLineStatus parseArguments(int argc, char** argv, CommandLineSettin
189189
printVersionFlag(program);
190190
return STATUS_OK_EXIT;
191191
case 's':
192-
assert(optarg); /* please clang analyzer, cause optarg can be NULL in the 'u' case */
192+
if (!optarg)
193+
return STATUS_ERROR_EXIT;
194+
193195
if (String_eq(optarg, "help")) {
194196
for (int j = 1; j < LAST_PROCESSFIELD; j++) {
195197
const char* name = Process_fields[j].name;
@@ -214,7 +216,9 @@ static CommandLineStatus parseArguments(int argc, char** argv, CommandLineSettin
214216
}
215217
break;
216218
case 'd':
217-
assert(optarg);
219+
if (!optarg)
220+
return STATUS_ERROR_EXIT;
221+
218222
if (sscanf(optarg, "%16d", &(flags->delay)) == 1) {
219223
if (flags->delay < 1)
220224
flags->delay = 1;
@@ -226,7 +230,9 @@ static CommandLineStatus parseArguments(int argc, char** argv, CommandLineSettin
226230
}
227231
break;
228232
case 'n':
229-
assert(optarg);
233+
if (!optarg)
234+
return STATUS_ERROR_EXIT;
235+
230236
if (sscanf(optarg, "%16d", &flags->iterationsRemaining) == 1) {
231237
if (flags->iterationsRemaining <= 0) {
232238
fprintf(stderr, "Error: maximum iteration count must be positive.\n");
@@ -310,7 +316,9 @@ static CommandLineStatus parseArguments(int argc, char** argv, CommandLineSettin
310316
break;
311317
}
312318
case 'F':
313-
assert(optarg);
319+
if (!optarg)
320+
return STATUS_ERROR_EXIT;
321+
314322
if (optarg[0] == '\0' || optarg[0] == '|') {
315323
fprintf(stderr, "Error: invalid filter value \"%s\".\n", optarg);
316324
return STATUS_ERROR_EXIT;

0 commit comments

Comments
 (0)