Adding d/p/16_check_snmp_disable_multiplier_when_unused from upstream

This commit is contained in:
Jan Wagner 2023-03-30 08:28:05 +00:00
parent eab1e1d487
commit 3ede3478c5
2 changed files with 91 additions and 0 deletions

View file

@ -0,0 +1,90 @@
From c874f950e8e5b6a805d8adf759d521501b22c7ce Mon Sep 17 00:00:00 2001
From: Sven Nierlein <Sven.Nierlein@consol.de>
Date: Wed, 15 Mar 2023 09:51:18 +0100
Subject: [PATCH 1/2] check_snmp: disable multiplier when unused
- if no multiplier is set, simply return the given string. Otherwise we would strip off the unit.
- if used, allocate new space to hold the result which might be larger than the initial input
Signed-off-by: Sven Nierlein <sven@consol.de>
---
plugins/check_snmp.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/plugins/check_snmp.c b/plugins/check_snmp.c
index d3968a27d..c4ddd0edd 100644
--- a/plugins/check_snmp.c
+++ b/plugins/check_snmp.c
@@ -46,6 +46,7 @@ const char *email = "devel@monitoring-plugins.org";
#define DEFAULT_PRIV_PROTOCOL "DES"
#define DEFAULT_DELIMITER "="
#define DEFAULT_OUTPUT_DELIMITER " "
+#define DEFAULT_BUFFER_SIZE 100
#define mark(a) ((a)!=0?"*":"")
@@ -157,6 +158,7 @@ int perf_labels = 1;
char* ip_version = "";
double multiplier = 1.0;
char *fmtstr = "";
+char buffer[DEFAULT_BUFFER_SIZE];
static char *fix_snmp_range(char *th)
{
@@ -1169,6 +1171,9 @@ multiply (char *str)
double val;
char *conv = "%f";
+ if(multiplier == 1)
+ return(str);
+
if(verbose>2)
printf(" multiply input: %s\n", str);
@@ -1187,15 +1192,15 @@ multiply (char *str)
conv = fmtstr;
}
if (val == (int)val) {
- sprintf(str, "%.0f", val);
+ snprintf(buffer, DEFAULT_BUFFER_SIZE, "%.0f", val);
} else {
if(verbose>2)
printf(" multiply using format: %s\n", conv);
- sprintf(str, conv, val);
+ snprintf(buffer, DEFAULT_BUFFER_SIZE, conv, val);
}
if(verbose>2)
- printf(" multiply result: %s\n", str);
- return str;
+ printf(" multiply result: %s\n", buffer);
+ return buffer;
}
From 6e64973a4486248ff6c3de7d72637e44b6474c3e Mon Sep 17 00:00:00 2001
From: Sven Nierlein <sven@consol.de>
Date: Mon, 27 Mar 2023 12:59:53 +0200
Subject: [PATCH 2/2] simplify code
if statement is always true at this point, so remove it.
---
plugins/check_snmp.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/plugins/check_snmp.c b/plugins/check_snmp.c
index c4ddd0edd..aefda3d29 100644
--- a/plugins/check_snmp.c
+++ b/plugins/check_snmp.c
@@ -1179,10 +1179,7 @@ multiply (char *str)
val = strtod (str, &endptr);
if ((val == 0.0) && (endptr == str)) {
- if(multiplier != 1) {
- die(STATE_UNKNOWN, _("multiplier set (%.1f), but input is not a number: %s"), multiplier, str);
- }
- return str;
+ die(STATE_UNKNOWN, _("multiplier set (%.1f), but input is not a number: %s"), multiplier, str);
}
if(verbose>2)

View file

@ -7,3 +7,4 @@
13_check_icmp_improvements 13_check_icmp_improvements
14_check_curl_fix_SSL_with_multiple_IPs 14_check_curl_fix_SSL_with_multiple_IPs
15_check_swap_remove_includes 15_check_swap_remove_includes
16_check_snmp_disable_multiplier_when_unused