|
Lines 294-300
process_config_line(Options *options, co
Link Here
|
| 294 |
int *activep) |
294 |
int *activep) |
| 295 |
{ |
295 |
{ |
| 296 |
char *s, **charptr, *endofnumber, *keyword, *arg, *arg2, fwdarg[256]; |
296 |
char *s, **charptr, *endofnumber, *keyword, *arg, *arg2, fwdarg[256]; |
| 297 |
int opcode, *intptr, value; |
297 |
int opcode, *intptr, value, orig, scale; |
| 298 |
size_t len; |
298 |
size_t len; |
| 299 |
Forward fwd; |
299 |
Forward fwd; |
| 300 |
|
300 |
|
|
Lines 467-486
parse_yesnoask:
Link Here
|
| 467 |
fatal("%.200s line %d: Missing argument.", filename, linenum); |
467 |
fatal("%.200s line %d: Missing argument.", filename, linenum); |
| 468 |
if (arg[0] < '0' || arg[0] > '9') |
468 |
if (arg[0] < '0' || arg[0] > '9') |
| 469 |
fatal("%.200s line %d: Bad number.", filename, linenum); |
469 |
fatal("%.200s line %d: Bad number.", filename, linenum); |
| 470 |
value = strtol(arg, &endofnumber, 10); |
470 |
orig = value = strtol(arg, &endofnumber, 10); |
| 471 |
if (arg == endofnumber) |
471 |
if (arg == endofnumber) |
| 472 |
fatal("%.200s line %d: Bad number.", filename, linenum); |
472 |
fatal("%.200s line %d: Bad number.", filename, linenum); |
| 473 |
switch (toupper(*endofnumber)) { |
473 |
switch (toupper(*endofnumber)) { |
|
|
474 |
case '\0': |
| 475 |
scale = 1; |
| 476 |
break; |
| 474 |
case 'K': |
477 |
case 'K': |
| 475 |
value *= 1<<10; |
478 |
scale = 1<<10; |
| 476 |
break; |
479 |
break; |
| 477 |
case 'M': |
480 |
case 'M': |
| 478 |
value *= 1<<20; |
481 |
scale = 1<<20; |
| 479 |
break; |
482 |
break; |
| 480 |
case 'G': |
483 |
case 'G': |
| 481 |
value *= 1<<30; |
484 |
scale = 1<<30; |
| 482 |
break; |
485 |
break; |
|
|
486 |
default: |
| 487 |
fatal("%.200s line %d: Invalid RekeyLimit suffix", |
| 488 |
filename, linenum); |
| 483 |
} |
489 |
} |
|
|
490 |
value *= scale; |
| 491 |
/* detect integer wrap */ |
| 492 |
if ((value / scale) != orig) |
| 493 |
fatal("%.200s line %d: RekeyLimit too large", |
| 494 |
filename, linenum); |
| 495 |
if (value < 1024) |
| 496 |
fatal("%.200s line %d: RekeyLimit must be greater " |
| 497 |
"than 1K", filename, linenum); |
| 484 |
if (*activep && *intptr == -1) |
498 |
if (*activep && *intptr == -1) |
| 485 |
*intptr = value; |
499 |
*intptr = value; |
| 486 |
break; |
500 |
break; |