Skip to content

Commit

Permalink
core: main - several optarg safety checks
Browse files Browse the repository at this point in the history
  • Loading branch information
miconda committed Apr 6, 2021
1 parent 26ab0fc commit 4f7b553
Showing 1 changed file with 44 additions and 0 deletions.
44 changes: 44 additions & 0 deletions src/main.c
Expand Up @@ -2140,17 +2140,29 @@ int main(int argc, char** argv)
/* ignore, they were parsed immediately after startup */
break;
case 'f':
if (optarg == NULL) {
fprintf(stderr, "bad -f parameter\n");
goto error;
}
cfg_file=optarg;
break;
case 'c':
config_check=1;
log_stderr=1; /* force stderr logging */
break;
case 'L':
if (optarg == NULL) {
fprintf(stderr, "bad -L parameter\n");
goto error;
}
mods_dir = optarg;
mods_dir_cmd = 1;
break;
case 'm':
if (optarg == NULL) {
fprintf(stderr, "bad shared mem size\n");
goto error;
}
shm_mem_size=strtol(optarg, &tmp, 10) * 1024 * 1024;
if (tmp &&(*tmp)){
fprintf(stderr, "bad shmem size number: -m %s\n",
Expand Down Expand Up @@ -2188,6 +2200,10 @@ int main(int argc, char** argv)
/* ignore it, was parsed immediately after startup */
break;
case 'O':
if (optarg == NULL) {
fprintf(stderr, "bad -O parameter\n");
goto error;
}
scr_opt_lev=strtol(optarg, &tmp, 10);
if (tmp &&(*tmp)){
fprintf(stderr, "bad optimization level: -O %s\n",
Expand All @@ -2200,6 +2216,10 @@ int main(int argc, char** argv)
user=optarg;
break;
case 'A':
if (optarg == NULL) {
fprintf(stderr, "bad -A parameter\n");
goto error;
}
p = strchr(optarg, '=');
if(p) {
tmp_len = p - optarg;
Expand Down Expand Up @@ -2451,6 +2471,10 @@ int main(int argc, char** argv)
takes priority over config */
break;
case 'b':
if (optarg == NULL) {
fprintf(stderr, "bad -b parameter\n");
goto error;
}
maxbuffer=strtol(optarg, &tmp, 10);
if (tmp &&(*tmp)){
fprintf(stderr, "bad max buffer size number: -b %s\n",
Expand All @@ -2473,6 +2497,10 @@ int main(int argc, char** argv)
#endif
break;
case 'l':
if (optarg == NULL) {
fprintf(stderr, "bad -l parameter\n");
goto error;
}
p = strrchr(optarg, '/');
if(p==NULL) {
p = optarg;
Expand Down Expand Up @@ -2522,6 +2550,10 @@ int main(int argc, char** argv)
free_name_lst(n_lst);
break;
case 'n':
if (optarg == NULL) {
fprintf(stderr, "bad -n parameter\n");
goto error;
}
children_no=strtol(optarg, &tmp, 10);
if ((tmp==0) ||(*tmp)){
fprintf(stderr, "bad process number: -n %s\n",
Expand All @@ -2548,6 +2580,10 @@ int main(int argc, char** argv)
"TCP support disabled\n", optarg);
goto error;
}
if (optarg == NULL) {
fprintf(stderr, "bad -N parameter\n");
goto error;
}
tcp_cfg_children_no=strtol(optarg, &tmp, 10);
if ((tmp==0) ||(*tmp)){
fprintf(stderr, "bad process number: -N %s\n",
Expand All @@ -2560,6 +2596,10 @@ int main(int argc, char** argv)
break;
case 'W':
#ifdef USE_TCP
if (optarg == NULL) {
fprintf(stderr, "bad -W parameter\n");
goto error;
}
tcp_poll_method=get_poll_type(optarg);
if (tcp_poll_method==POLL_NONE){
fprintf(stderr, "bad poll method name: -W %s\ntry "
Expand All @@ -2577,6 +2617,10 @@ int main(int argc, char** argv)
"SCTP support disabled\n", optarg);
goto error;
}
if (optarg == NULL) {
fprintf(stderr, "bad -Q parameter\n");
goto error;
}
sctp_children_no=strtol(optarg, &tmp, 10);
if ((tmp==0) ||(*tmp)){
fprintf(stderr, "bad process number: -O %s\n",
Expand Down

0 comments on commit 4f7b553

Please sign in to comment.