Module: monitoring-plugins
Branch: check_snmp_fixes
Commit: d28be4a00c5e2f3433b3d030aeac5ee656dc565d
Author: Andreas Baumann <[email protected]>
Date: Fri Jan 23 10:10:30 2026 +0100
URL:
https://www.monitoring-plugins.org/repositories/monitoring-plugins/commit/?id=d28be4a0
check_snmp_helpers.c: various possible fixes around const char */char * casts
---
plugins/check_snmp.c | 9 ++++++---
plugins/check_snmp.d/check_snmp_helpers.c | 19 ++++++++++++-------
2 files changed, 18 insertions(+), 10 deletions(-)
diff --git a/plugins/check_snmp.c b/plugins/check_snmp.c
index 0f62ce8b..2b3099c9 100644
--- a/plugins/check_snmp.c
+++ b/plugins/check_snmp.c
@@ -256,7 +256,10 @@ int main(int argc, char **argv) {
timeout_interval = DEFAULT_SOCKET_TIMEOUT;
- np_init((char *)progname, argc, argv);
+ char progname_copy[256];
+ strncpy(progname_copy, progname, sizeof(progname_copy)-1);
+ progname_copy[255] = '\0';
+ np_init(progname_copy, argc, argv);
state_key stateKey = np_enable_state(NULL, 1, progname, argc, argv);
@@ -508,8 +511,8 @@ static process_arguments_wrapper process_arguments(int
argc, char **argv) {
unsigned char *privpasswd = NULL;
int cflags = REG_EXTENDED | REG_NOSUB | REG_NEWLINE;
char *port = NULL;
- char *miblist = NULL;
- char *connection_prefix = NULL;
+ const char *miblist = NULL;
+ const char *connection_prefix = NULL;
bool snmp_version_set_explicitely = false;
// TODO error checking
while (true) {
diff --git a/plugins/check_snmp.d/check_snmp_helpers.c
b/plugins/check_snmp.d/check_snmp_helpers.c
index 2dfc88b5..d680678a 100644
--- a/plugins/check_snmp.d/check_snmp_helpers.c
+++ b/plugins/check_snmp.d/check_snmp_helpers.c
@@ -91,6 +91,8 @@ const char DEFAULT_OUTPUT_DELIMITER[] = " ";
const int RANDOM_STATE_DATA_LENGTH_PREDICTION = 8192;
+char community[100];
+
check_snmp_config check_snmp_config_init() {
check_snmp_config tmp = {
.snmp_params =
@@ -129,14 +131,17 @@ check_snmp_config check_snmp_config_init() {
tmp.snmp_params.snmp_session.retries = DEFAULT_RETRIES;
tmp.snmp_params.snmp_session.version = DEFAULT_SNMP_VERSION;
tmp.snmp_params.snmp_session.securityLevel = SNMP_SEC_LEVEL_NOAUTH;
- tmp.snmp_params.snmp_session.community = (unsigned char *)"public";
- tmp.snmp_params.snmp_session.community_len = strlen("public");
+ strcpy(community, "public");
+ tmp.snmp_params.snmp_session.community = (unsigned char *)community;
+ tmp.snmp_params.snmp_session.community_len = strlen(community);
return tmp;
}
snmp_responces do_snmp_query(check_snmp_config_snmp_parameters parameters) {
if (parameters.ignore_mib_parsing_errors) {
- char *opt_toggle_res = snmp_mib_toggle_options("e");
+ char option_e[2];
+ option_e[0] = 'e'; option_e[1] = '\0';
+ char *opt_toggle_res = snmp_mib_toggle_options(option_e);
if (opt_toggle_res != NULL) {
die(STATE_UNKNOWN, "Unable to disable MIB parsing
errors");
}
@@ -436,7 +441,7 @@ check_snmp_evaluation evaluate_single_unit(response_value
response,
}
} else {
// It's only a counter if we cont compute rate
- pd_num_val.uom = "c";
+ pd_num_val.uom = strdup("c");
pd_result_val =
mp_create_pd_value(response.value.uIntVal);
}
break;
@@ -476,7 +481,7 @@ check_snmp_evaluation evaluate_single_unit(response_value
response,
pd_result_val = mp_create_pd_value(treated_value);
if (response.type == ASN_COUNTER) {
- pd_num_val.uom = "c";
+ pd_num_val.uom = strdup("c");
}
}
@@ -820,7 +825,7 @@ state_data *np_state_read(state_key stateKey) {
* envvar NAGIOS_PLUGIN_STATE_DIRECTORY
* statically compiled shared state directory
*/
-char *_np_state_calculate_location_prefix(void) {
+static const char *_np_state_calculate_location_prefix(void) {
char *env_dir;
/* Do not allow passing MP_STATE_PATH in setuid plugins
@@ -871,7 +876,7 @@ state_key np_enable_state(char *keyname, int
expected_data_version, const char *
tmp_char++;
}
this_state->name = temp_keyname;
- this_state->plugin_name = (char *)plugin_name;
+ this_state->plugin_name = strdup(plugin_name);
this_state->data_version = expected_data_version;
this_state->state_data = NULL;