mirror of
https://github.com/monitoring-plugins/monitoring-plugins.git
synced 2026-03-12 13:43:30 -04:00
check_snmp: Fix support for inverse thresholds
Commit bd78299056 reintroduced support for
inverse threshold ranges such as "2:1", but it broke standard thresholds
such as "1:2" (by converting this range into "1") or "1:" (by converting
this range into "@:2"). This commit fixes those two bugs, plus an
off-by-one error while computing the number of bytes to allocate when
handling inverse thresholds (two additional bytes were allocated where
three were required to hold '@' and ':' and '\0'). While at it, we also
check whether malloc(3) succeeded.
This commit is contained in:
parent
ae8ff32eac
commit
461cea4261
1 changed files with 7 additions and 5 deletions
|
|
@ -150,16 +150,18 @@ static char *fix_snmp_range(char *th)
|
|||
{
|
||||
double left, right;
|
||||
char *colon, *ret;
|
||||
if (!(colon = strchr(th, ':')))
|
||||
|
||||
if ((colon = strchr(th, ':')) == NULL || *(colon + 1) == '\0')
|
||||
return th;
|
||||
*colon = 0;
|
||||
|
||||
left = strtod(th, NULL);
|
||||
right = strtod(colon + 1, NULL);
|
||||
if (right >= left) {
|
||||
if (right >= left)
|
||||
return th;
|
||||
}
|
||||
ret = malloc(strlen(th) + strlen(colon + 1) + 2);
|
||||
|
||||
if ((ret = malloc(strlen(th) + 2)) == NULL)
|
||||
die(STATE_UNKNOWN, _("Cannot malloc"));
|
||||
*colon = '\0';
|
||||
sprintf(ret, "@%s:%s", colon + 1, th);
|
||||
free(th);
|
||||
return ret;
|
||||
|
|
|
|||
Loading…
Reference in a new issue