summaryrefslogtreecommitdiffstats
path: root/plugins/check_ntp_time.c
diff options
context:
space:
mode:
authorLorenz Kästle <12514511+RincewindsHat@users.noreply.github.com>2026-06-11 02:40:07 +0200
committerGitHub <noreply@github.com>2026-06-11 02:40:07 +0200
commit1372654e8a2d392db35aae8f62586d55319ccb3c (patch)
tree016ba24eda7a01d2b764c036e5e963493f1199f1 /plugins/check_ntp_time.c
parentcc8d5b55dea3862d274891c1e91804576006d28b (diff)
downloadmonitoring-plugins-1372654e8a2d392db35aae8f62586d55319ccb3c.tar.gz
Check ntp time delay (#2277)HEADmaster
* check_ntp_time: add polling delay NTP server can have rate limiting which might be triggered by check_ntp_time due to many requests in a short time span. This patch adds a default delay (of 0.5s) between requests to each server and a command line option (--poll-delay) to make this delay configurable. Co-authored-by: Lorenz Kästle <lorenz@vulgrim.de> * check_ntp_time: verify whether socket path fits into address struct check_ntp_time could be give a too long (>108 bytes) socket path to work with, which would potentially crash the program. This patch validates to length beforehand and stops execution in that case. Co-authored-by: Lorenz Kästle <lorenz@vulgrim.de> --------- Co-authored-by: Paul Crawford <paul@crawford-space.co.uk> Co-authored-by: Lorenz Kästle <lorenz@vulgrim.de>
Diffstat (limited to 'plugins/check_ntp_time.c')
-rw-r--r--plugins/check_ntp_time.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/plugins/check_ntp_time.c b/plugins/check_ntp_time.c
index 3e23d0bf..2d9a6f40 100644
--- a/plugins/check_ntp_time.c
+++ b/plugins/check_ntp_time.c
@@ -43,6 +43,7 @@
43#include "thresholds.h" 43#include "thresholds.h"
44#include "check_ntp_time.d/config.h" 44#include "check_ntp_time.d/config.h"
45#include <netinet/in.h> 45#include <netinet/in.h>
46#include <string.h>
46#include <sys/socket.h> 47#include <sys/socket.h>
47 48
48static int verbose = 0; 49static int verbose = 0;
@@ -395,7 +396,10 @@ static offset_request_wrapper offset_request(const char *host, const char *port,
395 .sun_family = AF_UNIX, 396 .sun_family = AF_UNIX,
396 }; 397 };
397 398
398 strncpy(unix_socket.sun_path, host, strlen(host)); 399 if (strlen(host) > sizeof(unix_socket.sun_path)) {
400 die(STATE_UNKNOWN, "host argument is too long (%lu) for a socket path\n", strlen(host));
401 }
402 strncpy(unix_socket.sun_path, host, sizeof(unix_socket.sun_path));
399 403
400 if (connect(socklist[0], &unix_socket, sizeof(unix_socket))) { 404 if (connect(socklist[0], &unix_socket, sizeof(unix_socket))) {
401 /* don't die here, because it is enough if there is one server 405 /* don't die here, because it is enough if there is one server