Tobias Oetiker [Mon, 16 Jan 2012 10:59:14 +0000 (10:59 +0000)]
rrdtool is assuming that rrd_xport will always return -1 on failure;
however, rrd_xport returns errno (which is, generally, not -1) if
rrd_client fails. I figured it was easier to change rrdtool than to change
everything in rrd_client. For good measure, I also changed the checks on
the calls to rrd_fetch and rrd_graph. I'm not sure if they're susceptible
to the same problem, but, well, better to check for the one thing you do
what you want than to enumerate all the possible things you don't want.
This segfault is caused by an uninitialized variable use (in particular,
legend_v and col_cnt end up being used and passed to printf uninitialized).
Nothing offhand jumped out at me as easily-exploitable to do code
injection, but I only spent five or so minutes looking at it, so there very
well may be a security problem hiding behind this. -- James Brown <jbrown@yelp.com>
Tobias Oetiker [Mon, 28 Nov 2011 07:38:54 +0000 (07:38 +0000)]
It seems that function graph_size_location() doesn't call xtr(im, 0) if (im->extra_flags & ONLY_GRAPH) != 0. Therefore, static variable pixie in function xtr() remains uninitialized (fix for #322). -- u00mp yandex.ru
Tobias Oetiker [Tue, 22 Nov 2011 15:40:22 +0000 (15:40 +0000)]
allow to restore xml files with zero row rras ... this is a degenerated case
that does not occure in the wild, as rrdtool prevents the creation of such
rrd files. But rrdtool restore 1.3 did allows to create them via restore.
Now this is possible again. Fix for #310.
Tobias Oetiker [Wed, 16 Nov 2011 16:49:10 +0000 (16:49 +0000)]
dbi_result_get_datetime_idx() return timestamp in UTC, but time axis on graph supposed to be in local time.
fix provided in #321
--This line, and those below, will be ignored--
M trunk/program/src/rrd_fetch_libdbi.c
M branches/1.4/program/src/rrd_fetch_libdbi.c
Tobias Oetiker [Thu, 23 Jun 2011 05:45:36 +0000 (05:45 +0000)]
Fix for #304: checking for time_t is done with AC_RUN_IFELSE which fails when cross-compiling. The size of time_t can be detected with AC_CHECK_SIZEOF. -- Michael Olbrich
fix rrd_create behaviour when mmaping on a full filesystem by actually 'filling' the file with
zero. -- Francois-Xavier Bourlet francois-xavier.bourlet dotcloud.com
Tobias Oetiker [Tue, 21 Dec 2010 16:50:16 +0000 (16:50 +0000)]
The buffer length for command buffers should be controlled by a single
#define. Renamed CMD_MAX to RRD_CMD_MAX and put into rrd_client.h
so that it is available to clients as well. -- kevin brintnall
Tobias Oetiker [Tue, 21 Dec 2010 16:38:48 +0000 (16:38 +0000)]
1) Sigma calculation had an error. The first data value in each bin didn't get squared.
2) "rrdfillmissing" was dummy. I have added code to do the work. The parameter has NOW to be in seconds. In doc it is
given in steps. The size of steps depends to much on size of graph so I think its easier to use seconds and internal
calculate the number of steps.
Tobias Oetiker [Tue, 21 Dec 2010 16:06:32 +0000 (16:06 +0000)]
rrdcached: Fix permissions of the default socket.
If neither the "-l" nor the "-P" options have been given, a UNIX domain
socket at a default location is created. However, due to a missing
initialization in this case, the "permissions" field will be left at
zero (no command allowed).
This patch fixes this problem by allowing all commands on the default
socket if no "-P" option is given. -- Florian Forster
Tobias Oetiker [Mon, 20 Dec 2010 07:03:40 +0000 (07:03 +0000)]
add extra space to LDFLAGS when building ruby bindings ... otherwhise this will break if there is already content in LDFLAGS ... fix for #284 thanks dam at opencsw.
Tobias Oetiker [Thu, 11 Nov 2010 16:06:55 +0000 (16:06 +0000)]
Here is a patch that fixes a serious endless loop problem on 32 bit
architectures near the timestamp 2^31 (oh yes - y2k038 is showing its ugly
face) when using the graph command(s). Once the endtime of a graph is
above the mentioned timestamp, mktime always returns -1 (and correctly
so), causing some loops to loop forever. The patch fixes this, causing
some strange output, but there is no other sane way to handle this (expect
by switching to a 64 bit platform). -- Peter Stamfest
Tobias Oetiker [Tue, 9 Nov 2010 16:15:06 +0000 (16:15 +0000)]
make sure we do not try to draw points all that far outside the drawing area
since some versions of cairo seem to go unstable when this happens. -- Peter Stamfest
Tobias Oetiker [Mon, 11 Oct 2010 07:48:45 +0000 (07:48 +0000)]
* introduce a new rrd_create_r2 call to fix the no-overwrite api mess
* various fixes to new rrd_cached comands as suggested by kevin
1. Remove opt_no_overwrite and the rrd_create_set_no_overwrite function as they are ugly. Make opt_no_overwrite a local var.
2. Add 'no_overwrite' param to the rrd_create_r and rename as rrd_create_r2, add rrd_create_r that calls rrd_create_r2 with a 0 for the no_overwrite function, preserving the API parameter format but allowing an extended arg list that can be used by rrd_create and rrd_handle_request_create
3. Add -O option to rrdcached command line to force no-overwrite on any creates
4. Add -O option on create via rrdcached to optionally add no-overwrite (cannot remove it is it was previously set at start)
5. Fix rrd_handle_request_last to check the queue instead of forcing a flush. Remove -no-flush option from LAST command since it is now no longer relevant as we're querying the cache chain
6. Fix ulong/unsigned long issue for compilation under windows
7. Change rrd_handle_request_create to only accept timestamp parameters, not at-syntax, in order to be threadsafe. This is no loss since the rrd_client already pre-parses any at-style syntax
8. Reinstate missing free() in rrd_info.c and rrd_last.c
1. Add INFO <filename>, FIRST <filename> <index>, LAST <filename> and
CREATE <rrdfile> [-b start][-s step][-O] <DSdefs> <RRAdefs> to the rrdcached
functions.
2. Add rrd_create_set_no_overwrite as a function in rrd_create.c to allow
the overwrite flag to be set from rrd_daemon.c
3. Add rrdc_info, rrdc_first, rrdc_last, rrdc_create functions in
rrd_client.c
4. Add rrdcached support to rrd_info(), rrd_first(), rrd_last() and
rrd_create()
5. Add --noflush (-F) option to rrd_info(), rrd_last() to prevent cache
flushing before function call if required for efficiency
6. Add --daemon option to rrd_info(), rrd_first() for rrdcached support
7. Add buffer_add_ulong function to rrd_client.c (used by new rrdc_*
functions)
8. Add rrd_clear_error() call to rrd_create_r () to clean up bug if create
called more than once
9. Add -O option to rrdcached to force no-overwrite mode in CREATE function
the original version never restored the locale since it held a copy of the
new locale and not the old one despite the name. bug found by Pawe? 'Reef' Polewicz
Tobias Oetiker [Sun, 22 Aug 2010 17:56:02 +0000 (17:56 +0000)]
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.
* make rrd_getopt compile on solaris
* unify isinf isnan definitions for compilation and configuration
* replace round by rint if round is not available