You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
hardening: size the rrd_diff scratch buffer for its largest input @somethingwithproof
rrdtool dump now uses a numeric UTC offset (%z, e.g. +0900) instead
of the locale timezone name (%Z) in XML comments. Locale timezone names
can be encoded in a non-UTF-8 encoding (e.g. CJK locales), which breaks
the XML declaration and causes rrdtool restore to fail with
"Input is not proper UTF-8". The numeric offset is always ASCII.
Note: existing dump files already containing locale timezone names remain
valid XML as long as their encoding matches; newly created dumps will
always contain pure ASCII in these comments. Issue #1173
reported by @k79e, fix by @oetiker.
Fix segfault when --x-grid is given without a trailing date-format
field. The %n conversion in sscanf() is not counted in its return
value, so stroff remained uninitialized when the input ended before
the final : separator; the subsequent stroff != 0 guard read
garbage and could branch into strdup() with a bogus offset. Fixed by
initialising stroff = 0 so a partial match safely falls through to
the existing "invalid x-grid format" error path. Issue #1291
reported by @anvilvapre, fixed by @oetiker
libdbi /derive now returns 0 instead of NaN when the underlying
counter is constant (zero delta). Previously the strict d_value > 0
guard skipped zero deltas the same way it skips negative ones (counter
resets). Changed to d_value >= 0. Issue #550 reported by @bitionaire, fix by @oetiker.
Fix a 1-byte heap buffer overflow in checkUnusedValues() that
triggered *** buffer overflow detected *** SIGABRT under glibc
fortified strcat() when reporting unused graph arguments. The
function under-allocated by one byte and silently relied on that
overflow to make its trailing : strip land on the right index.
Refactored to size buffers correctly and prepend the separator
rather than build-then-strip, so the two no longer have to agree.
Reported and original fix attempt in PR #1329 by @ppisar,
refactored fix by @oetiker
Pad the Perl $RRDs::VERSION / $RRDp::VERSION numeric encoding so
two-digit minor releases compare monotonically. The numeric version
now uses three-digit zero-padded minor and patch fields, e.g.
1.10.3 -> 1.010003 (previously 1.10003, which was numerically less
than 1.9.0 -> 1.9000). The same encoding is now used by NUMVERS
in configure.ac and win32/rrd_config.h. Note: consumers that
previously tested $RRDs::VERSION >= 1.2 need to update their
checks (use >= 1.002 or compare against the X.Y.Z string via the version pragma) -- this is unavoidable given the existing format
could not represent two-digit minors monotonically. Issue #1330
reported by @ppisar, fixed by @oetiker
Y-axis labels keep enough fractional precision when the gridstep is
fractional after SI scaling (e.g. values around 10G+), avoiding
duplicate labels on tall graphs. Issue #1326 reported by @muusik,
fixed by @oetiker
Detect nroff support for -Wbreak at configure time, so building the
text documentation works on systems with BSD-derived nroff (e.g.
macOS /usr/bin/nroff). Issue #1323 reported by @gigaimage, fixed by @oetiker
Fix SIGFPE divide-by-zero crash in rrdtool dump when processing
fuzz-crafted RRD files that contain an RRA with pdp_cnt or pdp_step equal to zero. The modulo operation at the heart of the
timestamp calculation is now guarded: such files are rejected with
a descriptive error message instead of crashing.
Issue #783 reported by @rwhitworth, fix by @oetiker.
Features
rrdgraph: new --vertical-label-angle and --right-axis-label-angle options
to rotate the two y axis legends independently at run time. The compile
time RRDGRAPH_YLEGEND_ANGLE remains the default for both, so existing
graphs are unchanged. Use --right-axis-label-angle 270 to have the right
hand legend read from the top down. Suggested by @blappm in #1377,
implemented by @oetiker
rrdgraph: new --right-axis-range min:max option to suppress right axis
labels outside the given range, so a bounded right axis is no longer
labelled with values it cannot reach when the left axis range does not
line up. Either end may be left empty for unbounded. Suggested by @blappm
in #1377, implemented by @oetiker