diff options
| author | Sebastiano Tronto <sebastiano.tronto@gmail.com> | 2021-12-10 18:18:21 +0100 |
|---|---|---|
| committer | Sebastiano Tronto <sebastiano.tronto@gmail.com> | 2021-12-10 18:18:21 +0100 |
| commit | a238f897eee4be2fb561f4bbe33ed6aaa61b54ba (patch) | |
| tree | 4d2c0a038825c93e900565ae440b8e97013d62be | |
| parent | 6c28dec4a111ad73f8ac17c89305a951371f765d (diff) | |
| download | nissy-a238f897eee4be2fb561f4bbe33ed6aaa61b54ba.tar.gz nissy-a238f897eee4be2fb561f4bbe33ed6aaa61b54ba.zip | |
Fixed segfault when passing malformed command arguments to solve
| -rw-r--r-- | src/commands.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/commands.c b/src/commands.c index 287ee67..b90a7f5 100644 --- a/src/commands.c +++ b/src/commands.c | |||
| @@ -130,7 +130,7 @@ solve_parse_args(int c, char **v) | |||
| 130 | a->opts->print_number = true; | 130 | a->opts->print_number = true; |
| 131 | 131 | ||
| 132 | for (i = 0; i < c; i++) { | 132 | for (i = 0; i < c; i++) { |
| 133 | if (!strcmp(v[i], "-m")) { | 133 | if (!strcmp(v[i], "-m") && i+1 < c) { |
| 134 | val = strtol(v[++i], NULL, 10); | 134 | val = strtol(v[++i], NULL, 10); |
| 135 | if (val < 0 || val > 100) { | 135 | if (val < 0 || val > 100) { |
| 136 | fprintf(stderr, | 136 | fprintf(stderr, |
| @@ -139,7 +139,7 @@ solve_parse_args(int c, char **v) | |||
| 139 | return a; | 139 | return a; |
| 140 | } | 140 | } |
| 141 | a->opts->min_moves = val; | 141 | a->opts->min_moves = val; |
| 142 | } else if (!strcmp(v[i], "-M")) { | 142 | } else if (!strcmp(v[i], "-M") && i+1 < c) { |
| 143 | val = strtol(v[++i], NULL, 10); | 143 | val = strtol(v[++i], NULL, 10); |
| 144 | if (val < 0 || val > 100) { | 144 | if (val < 0 || val > 100) { |
| 145 | fprintf(stderr, | 145 | fprintf(stderr, |
| @@ -148,7 +148,7 @@ solve_parse_args(int c, char **v) | |||
| 148 | return a; | 148 | return a; |
| 149 | } | 149 | } |
| 150 | a->opts->max_moves = val; | 150 | a->opts->max_moves = val; |
| 151 | } else if (!strcmp(v[i], "-t")) { | 151 | } else if (!strcmp(v[i], "-t") && i+1 < c) { |
| 152 | val = strtol(v[++i], NULL, 10); | 152 | val = strtol(v[++i], NULL, 10); |
| 153 | if (val < 1 || val > 64) { | 153 | if (val < 1 || val > 64) { |
| 154 | fprintf(stderr, | 154 | fprintf(stderr, |
| @@ -157,7 +157,7 @@ solve_parse_args(int c, char **v) | |||
| 157 | return a; | 157 | return a; |
| 158 | } | 158 | } |
| 159 | a->opts->nthreads = val; | 159 | a->opts->nthreads = val; |
| 160 | } else if (!strcmp(v[i], "-s")) { | 160 | } else if (!strcmp(v[i], "-s") && i+1 < c) { |
| 161 | val = strtol(v[++i], NULL, 10); | 161 | val = strtol(v[++i], NULL, 10); |
| 162 | if (val < 1 || val > 1000000) { | 162 | if (val < 1 || val > 1000000) { |
| 163 | fprintf(stderr, | 163 | fprintf(stderr, |
