summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorLorenz <12514511+RincewindsHat@users.noreply.github.com>2023-03-11 11:34:47 +0100
committerGitHub <noreply@github.com>2023-03-11 11:34:47 +0100
commit75342b53853a898bdd93c7d3da9374115bab6b6d (patch)
tree0c0af2b796bcdd8ddd42187beb5badb420db8dea /lib
parent6bbe0b7b0f609ecab831dec9be7690842bf0a0fc (diff)
parent357787868b5201ec3e874e7a225b1c944cbbdb4d (diff)
downloadmonitoring-plugins-75342b53853a898bdd93c7d3da9374115bab6b6d.tar.gz
Merge branch 'master' into patch-1
Diffstat (limited to 'lib')
-rw-r--r--lib/tests/Makefile.am2
-rw-r--r--lib/tests/test_utils.c6
-rw-r--r--lib/utils_base.c8
-rw-r--r--lib/utils_base.h2
-rw-r--r--lib/utils_disk.c19
-rw-r--r--lib/utils_disk.h1
6 files changed, 27 insertions, 11 deletions
diff --git a/lib/tests/Makefile.am b/lib/tests/Makefile.am
index a8d7adee..31d79df6 100644
--- a/lib/tests/Makefile.am
+++ b/lib/tests/Makefile.am
@@ -27,7 +27,7 @@ endif
27 27
28AM_CFLAGS = -g -I$(top_srcdir)/lib -I$(top_srcdir)/gl $(tap_cflags) 28AM_CFLAGS = -g -I$(top_srcdir)/lib -I$(top_srcdir)/gl $(tap_cflags)
29AM_LDFLAGS = $(tap_ldflags) -ltap 29AM_LDFLAGS = $(tap_ldflags) -ltap
30LDADD = $(top_srcdir)/lib/libmonitoringplug.a $(top_srcdir)/gl/libgnu.a 30LDADD = $(top_srcdir)/lib/libmonitoringplug.a $(top_srcdir)/gl/libgnu.a $(LIB_CRYPTO)
31 31
32SOURCES = test_utils.c test_disk.c test_tcp.c test_cmd.c test_base64.c test_ini1.c test_ini3.c test_opts1.c test_opts2.c test_opts3.c 32SOURCES = test_utils.c test_disk.c test_tcp.c test_cmd.c test_base64.c test_ini1.c test_ini3.c test_opts1.c test_opts2.c test_opts3.c
33 33
diff --git a/lib/tests/test_utils.c b/lib/tests/test_utils.c
index f35b7e27..bc00fac1 100644
--- a/lib/tests/test_utils.c
+++ b/lib/tests/test_utils.c
@@ -309,7 +309,7 @@ main (int argc, char **argv)
309 309
310 /* This is the result of running ./test_utils */ 310 /* This is the result of running ./test_utils */
311 temp_string = (char *) _np_state_generate_key(); 311 temp_string = (char *) _np_state_generate_key();
312 ok(!strcmp(temp_string, "83d877b6cdfefb5d6f06101fd6fe76762f21792c"), "Got hash with exe and no parameters" ) || 312 ok(!strcmp(temp_string, "e2d17f995fd4c020411b85e3e3d0ff7306d4147e"), "Got hash with exe and no parameters" ) ||
313 diag( "You are probably running in wrong directory. Must run as ./test_utils" ); 313 diag( "You are probably running in wrong directory. Must run as ./test_utils" );
314 314
315 315
@@ -319,7 +319,7 @@ main (int argc, char **argv)
319 this_monitoring_plugin->argv[2] = "--and"; 319 this_monitoring_plugin->argv[2] = "--and";
320 this_monitoring_plugin->argv[3] = "now"; 320 this_monitoring_plugin->argv[3] = "now";
321 temp_string = (char *) _np_state_generate_key(); 321 temp_string = (char *) _np_state_generate_key();
322 ok(!strcmp(temp_string, "94b5e17bf5abf51cb15aff5f69b96f2f8dac5ecd"), "Got based on expected argv" ); 322 ok(!strcmp(temp_string, "bd72da9f78ff1419fad921ea5e43ce56508aef6c"), "Got based on expected argv" );
323 323
324 unsetenv("MP_STATE_PATH"); 324 unsetenv("MP_STATE_PATH");
325 temp_string = (char *) _np_state_calculate_location_prefix(); 325 temp_string = (char *) _np_state_calculate_location_prefix();
@@ -342,7 +342,7 @@ main (int argc, char **argv)
342 np_enable_state(NULL, 51); 342 np_enable_state(NULL, 51);
343 temp_state_key = this_monitoring_plugin->state; 343 temp_state_key = this_monitoring_plugin->state;
344 ok( !strcmp(temp_state_key->plugin_name, "check_test"), "Got plugin name" ); 344 ok( !strcmp(temp_state_key->plugin_name, "check_test"), "Got plugin name" );
345 ok( !strcmp(temp_state_key->name, "83d877b6cdfefb5d6f06101fd6fe76762f21792c"), "Got generated filename" ); 345 ok( !strcmp(temp_state_key->name, "e2d17f995fd4c020411b85e3e3d0ff7306d4147e"), "Got generated filename" );
346 346
347 347
348 np_enable_state("allowedchars_in_keyname", 77); 348 np_enable_state("allowedchars_in_keyname", 77);
diff --git a/lib/utils_base.c b/lib/utils_base.c
index 08fa215c..eb1823bb 100644
--- a/lib/utils_base.c
+++ b/lib/utils_base.c
@@ -402,20 +402,20 @@ int mp_translate_state (char *state_text) {
402 * parse of argv, so that uniqueness in parameters are reflected there. 402 * parse of argv, so that uniqueness in parameters are reflected there.
403 */ 403 */
404char *_np_state_generate_key() { 404char *_np_state_generate_key() {
405 struct sha1_ctx ctx; 405 struct sha256_ctx ctx;
406 int i; 406 int i;
407 char **argv = this_monitoring_plugin->argv; 407 char **argv = this_monitoring_plugin->argv;
408 unsigned char result[20]; 408 unsigned char result[20];
409 char keyname[41]; 409 char keyname[41];
410 char *p=NULL; 410 char *p=NULL;
411 411
412 sha1_init_ctx(&ctx); 412 sha256_init_ctx(&ctx);
413 413
414 for(i=0; i<this_monitoring_plugin->argc; i++) { 414 for(i=0; i<this_monitoring_plugin->argc; i++) {
415 sha1_process_bytes(argv[i], strlen(argv[i]), &ctx); 415 sha256_process_bytes(argv[i], strlen(argv[i]), &ctx);
416 } 416 }
417 417
418 sha1_finish_ctx(&ctx, &result); 418 sha256_finish_ctx(&ctx, &result);
419 419
420 for (i=0; i<20; ++i) { 420 for (i=0; i<20; ++i) {
421 sprintf(&keyname[2*i], "%02x", result[i]); 421 sprintf(&keyname[2*i], "%02x", result[i]);
diff --git a/lib/utils_base.h b/lib/utils_base.h
index 9482f23b..59065504 100644
--- a/lib/utils_base.h
+++ b/lib/utils_base.h
@@ -2,7 +2,7 @@
2#define _UTILS_BASE_ 2#define _UTILS_BASE_
3/* Header file for Monitoring Plugins utils_base.c */ 3/* Header file for Monitoring Plugins utils_base.c */
4 4
5#include "sha1.h" 5#include "sha256.h"
6 6
7/* This file holds header information for thresholds - use this in preference to 7/* This file holds header information for thresholds - use this in preference to
8 individual plugin logic */ 8 individual plugin logic */
diff --git a/lib/utils_disk.c b/lib/utils_disk.c
index 4f16068a..468769b1 100644
--- a/lib/utils_disk.c
+++ b/lib/utils_disk.c
@@ -47,9 +47,10 @@ np_add_parameter(struct parameter_list **list, const char *name)
47 struct parameter_list *current = *list; 47 struct parameter_list *current = *list;
48 struct parameter_list *new_path; 48 struct parameter_list *new_path;
49 new_path = (struct parameter_list *) malloc (sizeof *new_path); 49 new_path = (struct parameter_list *) malloc (sizeof *new_path);
50 new_path->name = (char *) name; 50 new_path->name = (char *) malloc(strlen(name) + 1);
51 new_path->best_match = NULL; 51 new_path->best_match = NULL;
52 new_path->name_next = NULL; 52 new_path->name_next = NULL;
53 new_path->name_prev = NULL;
53 new_path->freespace_bytes = NULL; 54 new_path->freespace_bytes = NULL;
54 new_path->freespace_units = NULL; 55 new_path->freespace_units = NULL;
55 new_path->freespace_percent = NULL; 56 new_path->freespace_percent = NULL;
@@ -75,13 +76,17 @@ np_add_parameter(struct parameter_list **list, const char *name)
75 new_path->dused_inodes_percent = 0; 76 new_path->dused_inodes_percent = 0;
76 new_path->dfree_inodes_percent = 0; 77 new_path->dfree_inodes_percent = 0;
77 78
79 strcpy(new_path->name, name);
80
78 if (current == NULL) { 81 if (current == NULL) {
79 *list = new_path; 82 *list = new_path;
83 new_path->name_prev = NULL;
80 } else { 84 } else {
81 while (current->name_next) { 85 while (current->name_next) {
82 current = current->name_next; 86 current = current->name_next;
83 } 87 }
84 current->name_next = new_path; 88 current->name_next = new_path;
89 new_path->name_prev = current;
85 } 90 }
86 return new_path; 91 return new_path;
87} 92}
@@ -90,6 +95,9 @@ np_add_parameter(struct parameter_list **list, const char *name)
90struct parameter_list * 95struct parameter_list *
91np_del_parameter(struct parameter_list *item, struct parameter_list *prev) 96np_del_parameter(struct parameter_list *item, struct parameter_list *prev)
92{ 97{
98 if (item == NULL) {
99 return NULL;
100 }
93 struct parameter_list *next; 101 struct parameter_list *next;
94 102
95 if (item->name_next) 103 if (item->name_next)
@@ -97,10 +105,17 @@ np_del_parameter(struct parameter_list *item, struct parameter_list *prev)
97 else 105 else
98 next = NULL; 106 next = NULL;
99 107
100 free(item); 108 if (next)
109 next->name_prev = prev;
110
101 if (prev) 111 if (prev)
102 prev->name_next = next; 112 prev->name_next = next;
103 113
114 if (item->name) {
115 free(item->name);
116 }
117 free(item);
118
104 return next; 119 return next;
105} 120}
106 121
diff --git a/lib/utils_disk.h b/lib/utils_disk.h
index bf52e4ce..3b5a45f8 100644
--- a/lib/utils_disk.h
+++ b/lib/utils_disk.h
@@ -24,6 +24,7 @@ struct parameter_list
24 char *group; 24 char *group;
25 struct mount_entry *best_match; 25 struct mount_entry *best_match;
26 struct parameter_list *name_next; 26 struct parameter_list *name_next;
27 struct parameter_list *name_prev;
27 uintmax_t total, available, available_to_root, used, 28 uintmax_t total, available, available_to_root, used,
28 inodes_free, inodes_free_to_root, inodes_used, inodes_total; 29 inodes_free, inodes_free_to_root, inodes_used, inodes_total;
29 double dfree_pct, dused_pct; 30 double dfree_pct, dused_pct;