X-Git-Url: https://git.octo.it/?p=rrdtool.git;a=blobdiff_plain;f=src%2Frrd_update.c;h=8efd49305cf52a2c02f8418ecfe16a3c12d7f7c3;hp=af69ecc5361f83dfe5b79c60d062cdce83447ae3;hb=1f4afee5f2eb2281a1aa484bdc4ba4b4a044ce69;hpb=ce30e9e1379022835687aa08b7712e27372e05ec diff --git a/src/rrd_update.c b/src/rrd_update.c index af69ecc..8efd493 100644 --- a/src/rrd_update.c +++ b/src/rrd_update.c @@ -1,5 +1,5 @@ /***************************************************************************** - * RRDtool 1.4.1 Copyright by Tobi Oetiker, 1997-2009 + * RRDtool 1.4.2 Copyright by Tobi Oetiker, 1997-2009 * Copyright by Florian Forster, 2008 ***************************************************************************** * rrd_update.c RRD Update Function @@ -905,12 +905,16 @@ static int parse_ds( if (i < tmpl_cnt) { updvals[tmpl_idx[i++]] = p + 1; } + else { + rrd_set_error("found extra data on update argument: %s",p+1); + return -1; + } } } if (i != tmpl_cnt) { rrd_set_error("expected %lu data source readings (got %lu) from %s", - tmpl_cnt - 1, i, input); + tmpl_cnt - 1, i - 1, input); return -1; } @@ -1039,10 +1043,19 @@ static int update_pdp_prep( switch (dst_idx) { case DST_COUNTER: case DST_DERIVE: - for (ii = 0; updvals[ds_idx + 1][ii] != '\0'; ii++) { - if ((updvals[ds_idx + 1][ii] < '0' - || updvals[ds_idx + 1][ii] > '9') - && (ii != 0 && updvals[ds_idx + 1][ii] != '-')) { + if ( ( updvals[ds_idx + 1][0] < '0' + || updvals[ds_idx + 1][0] > '9' ) + && updvals[ds_idx + 1][0] != '-' + && updvals[ds_idx + 1][0] != 'U' + ) { + rrd_set_error("not a simple integer: '%s'", + updvals[ds_idx + 1]); + return -1; + } + for (ii = 1; updvals[ds_idx + 1][ii] != '\0'; ii++) { + if ( updvals[ds_idx + 1][ii] < '0' + || updvals[ds_idx + 1][ii] > '9' + ) { rrd_set_error("not a simple integer: '%s'", updvals[ds_idx + 1]); return -1;