summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRolf Eike Beer <eike@sf-mail.de>2020-11-02 20:05:56 +0100
committerRolf Eike Beer <eike@sf-mail.de>2020-11-02 20:05:56 +0100
commitad99755033f33a301abc1815d746644067bc297a (patch)
tree1405d7d48df213aac85f6ba215feb7d5c05719d6
parent67877a296ef5a0f2f17efd8c2f069c3b4689ccd0 (diff)
downloadmonitoring-plugins-ad99755033f33a301abc1815d746644067bc297a.tar.gz
check_dns: split multiple IP addresses passed in one -a argument
-rw-r--r--plugins/check_dns.c20
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;