diff options
author | Rolf Eike Beer <eike@sf-mail.de> | 2020-11-02 20:05:56 +0100 |
---|---|---|
committer | Jan Wagner <waja@cyconet.org> | 2021-04-10 13:43:12 +0200 |
commit | a56d01d028d08296ffa080bf9a7d8cf6a04895ef (patch) | |
tree | db460454f51f4d2528f6674b8c2527e5d2634a05 /plugins/check_dns.c | |
parent | d5b81e8966d71ac2f13465fa308c9910b0e31992 (diff) | |
download | monitoring-plugins-a56d01d028d08296ffa080bf9a7d8cf6a04895ef.tar.gz |
check_dns: split multiple IP addresses passed in one -a argument
Diffstat (limited to 'plugins/check_dns.c')
-rw-r--r-- | plugins/check_dns.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/plugins/check_dns.c b/plugins/check_dns.c index b90f50e6..0f2e6541 100644 --- a/plugins/check_dns.c +++ b/plugins/check_dns.c | |||
@@ -473,9 +473,23 @@ process_arguments (int argc, char **argv) | |||
473 | case 'a': /* expected address */ | 473 | case 'a': /* expected address */ |
474 | if (strlen (optarg) >= ADDRESS_LENGTH) | 474 | if (strlen (optarg) >= ADDRESS_LENGTH) |
475 | die (STATE_UNKNOWN, _("Input buffer overflow\n")); | 475 | die (STATE_UNKNOWN, _("Input buffer overflow\n")); |
476 | expected_address = (char **)realloc(expected_address, (expected_address_cnt+1) * sizeof(char**)); | 476 | if (strchr(optarg, ',') != NULL) { |
477 | expected_address[expected_address_cnt] = strdup(optarg); | 477 | char *comma = strchr(optarg, ','); |
478 | expected_address_cnt++; | 478 | while (comma != NULL) { |
479 | expected_address = (char **)realloc(expected_address, (expected_address_cnt+1) * sizeof(char**)); | ||
480 | expected_address[expected_address_cnt] = strndup(optarg, comma - optarg); | ||
481 | expected_address_cnt++; | ||
482 | optarg = comma + 1; | ||
483 | comma = strchr(optarg, ','); | ||
484 | } | ||
485 | expected_address = (char **)realloc(expected_address, (expected_address_cnt+1) * sizeof(char**)); | ||
486 | expected_address[expected_address_cnt] = strdup(optarg); | ||
487 | expected_address_cnt++; | ||
488 | } else { | ||
489 | expected_address = (char **)realloc(expected_address, (expected_address_cnt+1) * sizeof(char**)); | ||
490 | expected_address[expected_address_cnt] = strdup(optarg); | ||
491 | expected_address_cnt++; | ||
492 | } | ||
479 | break; | 493 | break; |
480 | case 'A': /* expect authority */ | 494 | case 'A': /* expect authority */ |
481 | expect_authority = TRUE; | 495 | expect_authority = TRUE; |