From: oetiker Date: Sun, 22 Aug 2010 17:56:02 +0000 (+0000) Subject: First bug: in function rrd_fetch_fn_libdbi() variable 'struct sql_table_helper table_... X-Git-Url: https://git.octo.it/?p=rrdtool.git;a=commitdiff_plain;h=c3c9e029ac5763156769afdbb3c6846316c70dd5;hp=c6824ca3f64bd2945fa4b6a772ae5322949d399f First bug: in function rrd_fetch_fn_libdbi() variable 'struct sql_table_helper table_help' field 'filename' is uninitialized. So, if a sql error happens, it does not print an error like this rrd_set_error( "libdbi: problems connecting to db with connect string %s - error: %s",th->filename,dbi_errstr); instead of, it dumps core. Second bug: when the output data buffer is allocated, it allocated for 'rows-1' max index, but in 'fetch loop' 'idx' may be equal to 'rows', so it needs one more extra record in data. -- Pavel Nikiforov pavel artx.ru git-svn-id: svn://svn.oetiker.ch/rrdtool/trunk/program@2118 a5681a0c-68f1-0310-ab6d-d61299d08faa --- diff --git a/src/rrd_fetch_libdbi.c b/src/rrd_fetch_libdbi.c index 7ca809e..fb0dc7e 100644 --- a/src/rrd_fetch_libdbi.c +++ b/src/rrd_fetch_libdbi.c @@ -401,6 +401,7 @@ rrd_fetch_fn_libdbi( char where[10240]; table_help.conn=NULL; table_help.where=where; + table_help.filtename=filename; /* some loop variables */ int i=0; @@ -564,7 +565,7 @@ rrd_fetch_fn_libdbi( } /* allocate memory for resultset (with the following columns: min,avg,max,count,sigma) */ - i=rows * sizeof(rrd_value_t)*(*ds_cnt); + i=(rows+1) * sizeof(rrd_value_t)*(*ds_cnt); if (((*data) = malloc(i))==NULL){ /* and return error */ rrd_set_error("malloc failed for %i bytes",i);