summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLorenz Kästle <12514511+RincewindsHat@users.noreply.github.com>2026-01-16 02:42:01 +0100
committerGitHub <noreply@github.com>2026-01-16 02:42:01 +0100
commitb58e244cc76afc0c02a201fbbdd079db02ed841d (patch)
tree976a07d5849c0bd2fe6b3a4bb47b27de446a7a73
parent67160010028681c7fe2461459a9fecc33a7e4dbf (diff)
downloadmonitoring-plugins-b58e244cc76afc0c02a201fbbdd079db02ed841d.tar.gz
check_icmp: prevent segfault on OpenBSD (#2224)HEADmaster
* check_icmp: prevent segfault on OpenBSD This commit adds a sanity check for sockets in check_icmp. Previously FD_ISSET segfaulted when a socket value was -1 (on OpenBSD). The changes here add an explicit check whether the socket is -1 (and therefore not set). --------- Co-authored-by: Lorenz Kästle <lorenz.kaestle@netways.de>
-rw-r--r--plugins-root/check_icmp.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/plugins-root/check_icmp.c b/plugins-root/check_icmp.c
index 58d8a545..5bfb5cb5 100644
--- a/plugins-root/check_icmp.c
+++ b/plugins-root/check_icmp.c
@@ -1470,10 +1470,13 @@ static recvfrom_wto_wrapper recvfrom_wto(const check_icmp_socket_set sockset, vo
1470 }; 1470 };
1471 1471
1472 ssize_t ret; 1472 ssize_t ret;
1473 if (FD_ISSET(sockset.socket4, &read_fds)) { 1473
1474 // Test explicitly whether sockets are in use
1475 // this is necessary at least on OpenBSD where FD_ISSET will segfault otherwise
1476 if ((sockset.socket4 != -1) && FD_ISSET(sockset.socket4, &read_fds)) {
1474 ret = recvmsg(sockset.socket4, &hdr, 0); 1477 ret = recvmsg(sockset.socket4, &hdr, 0);
1475 result.recv_proto = AF_INET; 1478 result.recv_proto = AF_INET;
1476 } else if (FD_ISSET(sockset.socket6, &read_fds)) { 1479 } else if ((sockset.socket6 != -1) && FD_ISSET(sockset.socket6, &read_fds)) {
1477 ret = recvmsg(sockset.socket6, &hdr, 0); 1480 ret = recvmsg(sockset.socket6, &hdr, 0);
1478 result.recv_proto = AF_INET6; 1481 result.recv_proto = AF_INET6;
1479 } else { 1482 } else {