diff options
| author | RincewindsHat <12514511+RincewindsHat@users.noreply.github.com> | 2023-10-07 11:48:57 +0200 |
|---|---|---|
| committer | RincewindsHat <12514511+RincewindsHat@users.noreply.github.com> | 2023-10-07 11:48:57 +0200 |
| commit | 19dc0039365e5cae0ed866c10202c50338f70b0a (patch) | |
| tree | 9df3a28d371ad76d160c557e6f8645e78a57ef48 /plugins-root | |
| parent | 9faa417aeb468be0ebb646ee3fc276014795e76f (diff) | |
| download | monitoring-plugins-19dc0039365e5cae0ed866c10202c50338f70b0a.tar.gz | |
Do some actual error checking on the threshold parser
Diffstat (limited to 'plugins-root')
| -rw-r--r-- | plugins-root/check_icmp.c | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/plugins-root/check_icmp.c b/plugins-root/check_icmp.c index c71ea29c..7140aa50 100644 --- a/plugins-root/check_icmp.c +++ b/plugins-root/check_icmp.c | |||
| @@ -526,7 +526,8 @@ main(int argc, char **argv) | |||
| 526 | /* Reset argument scanning */ | 526 | /* Reset argument scanning */ |
| 527 | optind = 1; | 527 | optind = 1; |
| 528 | 528 | ||
| 529 | unsigned long size; | 529 | unsigned long size; |
| 530 | bool err; | ||
| 530 | /* parse the arguments */ | 531 | /* parse the arguments */ |
| 531 | for(i = 1; i < argc; i++) { | 532 | for(i = 1; i < argc; i++) { |
| 532 | while((arg = getopt(argc, argv, opts_str)) != EOF) { | 533 | while((arg = getopt(argc, argv, opts_str)) != EOF) { |
| @@ -591,23 +592,48 @@ main(int argc, char **argv) | |||
| 591 | exit (STATE_UNKNOWN); | 592 | exit (STATE_UNKNOWN); |
| 592 | break; | 593 | break; |
| 593 | case 'R': /* RTA mode */ | 594 | case 'R': /* RTA mode */ |
| 594 | get_threshold2(optarg, strlen(optarg), &warn, &crit, const_rta_mode); | 595 | err = get_threshold2(optarg, strlen(optarg), &warn, &crit, const_rta_mode); |
| 596 | |||
| 597 | if (!err) { | ||
| 598 | crash("Failed to parse RTA threshold"); | ||
| 599 | } | ||
| 600 | |||
| 595 | rta_mode=true; | 601 | rta_mode=true; |
| 596 | break; | 602 | break; |
| 597 | case 'P': /* packet loss mode */ | 603 | case 'P': /* packet loss mode */ |
| 598 | get_threshold2(optarg, strlen(optarg), &warn, &crit, const_packet_loss_mode); | 604 | err = get_threshold2(optarg, strlen(optarg), &warn, &crit, const_packet_loss_mode); |
| 605 | |||
| 606 | if (!err) { | ||
| 607 | crash("Failed to parse packet loss threshold"); | ||
| 608 | } | ||
| 609 | |||
| 599 | pl_mode=true; | 610 | pl_mode=true; |
| 600 | break; | 611 | break; |
| 601 | case 'J': /* jitter mode */ | 612 | case 'J': /* jitter mode */ |
| 602 | get_threshold2(optarg, strlen(optarg), &warn, &crit, const_jitter_mode); | 613 | err = get_threshold2(optarg, strlen(optarg), &warn, &crit, const_jitter_mode); |
| 614 | |||
| 615 | if (!err) { | ||
| 616 | crash("Failed to parse jitter threshold"); | ||
| 617 | } | ||
| 618 | |||
| 603 | jitter_mode=true; | 619 | jitter_mode=true; |
| 604 | break; | 620 | break; |
| 605 | case 'M': /* MOS mode */ | 621 | case 'M': /* MOS mode */ |
| 606 | get_threshold2(optarg, strlen(optarg), &warn, &crit, const_mos_mode); | 622 | err = get_threshold2(optarg, strlen(optarg), &warn, &crit, const_mos_mode); |
| 623 | |||
| 624 | if (!err) { | ||
| 625 | crash("Failed to parse MOS threshold"); | ||
| 626 | } | ||
| 627 | |||
| 607 | mos_mode=true; | 628 | mos_mode=true; |
| 608 | break; | 629 | break; |
| 609 | case 'S': /* score mode */ | 630 | case 'S': /* score mode */ |
| 610 | get_threshold2(optarg, strlen(optarg), &warn, &crit, const_score_mode); | 631 | err = get_threshold2(optarg, strlen(optarg), &warn, &crit, const_score_mode); |
| 632 | |||
| 633 | if (!err) { | ||
| 634 | crash("Failed to parse score threshold"); | ||
| 635 | } | ||
| 636 | |||
| 611 | score_mode=true; | 637 | score_mode=true; |
| 612 | break; | 638 | break; |
| 613 | case 'O': /* out of order mode */ | 639 | case 'O': /* out of order mode */ |
