diff options
author | Jan Wagner <waja@cyconet.org> | 2013-07-08 11:46:52 +0200 |
---|---|---|
committer | Holger Weiss <holger@zedat.fu-berlin.de> | 2013-07-08 18:52:50 +0200 |
commit | bfe68d84f78c12f55e996e43201d280802de7984 (patch) | |
tree | 14cc72ef207cab64e26b7a4c2282fd7b57b2b086 | |
parent | fbb66b86b3f47b5debc498d3fe7f3d10ac28a232 (diff) | |
download | monitoring-plugins-bfe68d84f78c12f55e996e43201d280802de7984.tar.gz |
check_nt: Fixes NULL pointer dereference
Thanks to Vaclav Ovsik for reporting the issue and providing a fix
-rw-r--r-- | THANKS.in | 1 | ||||
-rw-r--r-- | plugins/check_nt.c | 16 |
2 files changed, 14 insertions, 3 deletions
@@ -280,3 +280,4 @@ Alex Bradley | |||
280 | Brian De Wolf | 280 | Brian De Wolf |
281 | Richard Leitner | 281 | Richard Leitner |
282 | Diego Elio Pettenò | 282 | Diego Elio Pettenò |
283 | Vaclav Ovsik | ||
diff --git a/plugins/check_nt.c b/plugins/check_nt.c index 89c4d8d3..52bbd1c5 100644 --- a/plugins/check_nt.c +++ b/plugins/check_nt.c | |||
@@ -94,6 +94,7 @@ int main(int argc, char **argv){ | |||
94 | char *description=NULL,*counter_unit = NULL; | 94 | char *description=NULL,*counter_unit = NULL; |
95 | char *minval = NULL, *maxval = NULL, *errcvt = NULL; | 95 | char *minval = NULL, *maxval = NULL, *errcvt = NULL; |
96 | char *fds=NULL, *tds=NULL; | 96 | char *fds=NULL, *tds=NULL; |
97 | char *numstr; | ||
97 | 98 | ||
98 | double total_disk_space=0; | 99 | double total_disk_space=0; |
99 | double free_disk_space=0; | 100 | double free_disk_space=0; |
@@ -265,7 +266,10 @@ int main(int argc, char **argv){ | |||
265 | xasprintf(&send_buffer,"%s&%u&%s&%s", req_password,(vars_to_check==CHECK_SERVICESTATE)?5:6, | 266 | xasprintf(&send_buffer,"%s&%u&%s&%s", req_password,(vars_to_check==CHECK_SERVICESTATE)?5:6, |
266 | (show_all==TRUE) ? "ShowAll" : "ShowFail",value_list); | 267 | (show_all==TRUE) ? "ShowAll" : "ShowFail",value_list); |
267 | fetch_data (server_address, server_port, send_buffer); | 268 | fetch_data (server_address, server_port, send_buffer); |
268 | return_code=atoi(strtok(recv_buffer,"&")); | 269 | numstr = strtok(recv_buffer,"&"); |
270 | if (numstr == NULL) | ||
271 | die(STATE_UNKNOWN, _("could not fetch information from server\n")); | ||
272 | return_code=atoi(numstr); | ||
269 | temp_string=strtok(NULL,"&"); | 273 | temp_string=strtok(NULL,"&"); |
270 | output_message = strdup (temp_string); | 274 | output_message = strdup (temp_string); |
271 | } | 275 | } |
@@ -275,8 +279,14 @@ int main(int argc, char **argv){ | |||
275 | 279 | ||
276 | xasprintf(&send_buffer,"%s&7", req_password); | 280 | xasprintf(&send_buffer,"%s&7", req_password); |
277 | fetch_data (server_address, server_port, send_buffer); | 281 | fetch_data (server_address, server_port, send_buffer); |
278 | mem_commitLimit=atof(strtok(recv_buffer,"&")); | 282 | numstr = strtok(recv_buffer,"&"); |
279 | mem_commitByte=atof(strtok(NULL,"&")); | 283 | if (numstr == NULL) |
284 | die(STATE_UNKNOWN, _("could not fetch information from server\n")); | ||
285 | mem_commitLimit=atof(numstr); | ||
286 | numstr = strtok(NULL,"&"); | ||
287 | if (numstr == NULL) | ||
288 | die(STATE_UNKNOWN, _("could not fetch information from server\n")); | ||
289 | mem_commitByte=atof(numstr); | ||
280 | percent_used_space = (mem_commitByte / mem_commitLimit) * 100; | 290 | percent_used_space = (mem_commitByte / mem_commitLimit) * 100; |
281 | warning_used_space = ((float)warning_value / 100) * mem_commitLimit; | 291 | warning_used_space = ((float)warning_value / 100) * mem_commitLimit; |
282 | critical_used_space = ((float)critical_value / 100) * mem_commitLimit; | 292 | critical_used_space = ((float)critical_value / 100) * mem_commitLimit; |