Add CollectdError exception which can be thrown without causing a stacktrace to be logged.
Merge branch 'collectd-5.7'
tcpconns plugin: fix build on FreeBSD current
FreeBSD commit https://github.com/freebsd/freebsd/commit/3a5c9aaf2b2ea107bcaf0ba28b706238d92bdbbd
hides inpcb and tcpcb from userland.
Patch taken from FreeBSD ports tree, thanks glebius@.
FreeBSD commit https://github.com/freebsd/freebsd/commit/3a5c9aaf2b2ea107bcaf0ba28b706238d92bdbbd
hides inpcb and tcpcb from userland.
Patch taken from FreeBSD ports tree, thanks glebius@.
write_mongodb: use ssnprintf_alloc to create dsn
write_mongodb: fix potential NULL dereference
scan-build: Using '/usr/bin/clang-4.0' for static analysis
make all-am
make[1]: Entering directory '/home/ruben/src/collectd'
CC src/write_mongodb_la-write_mongodb.lo
src/write_mongodb.c:173:41: warning: Null pointer passed as an argument to a 'nonnull' parameter
strlen(node->passwd) + strlen(node->host) + 5 +
^~~~~~~~~~~~~~~~~~
src/write_mongodb.c:199:42: warning: Null pointer passed as an argument to a 'nonnull' parameter
uri_length = strlen(format_string) + strlen(node->host) + 5 + 1;
^~~~~~~~~~~~~~~~~~
2 warnings generated.
CCLD write_mongodb.la
scan-build: Using '/usr/bin/clang-4.0' for static analysis
make all-am
make[1]: Entering directory '/home/ruben/src/collectd'
CC src/write_mongodb_la-write_mongodb.lo
src/write_mongodb.c:173:41: warning: Null pointer passed as an argument to a 'nonnull' parameter
strlen(node->passwd) + strlen(node->host) + 5 +
^~~~~~~~~~~~~~~~~~
src/write_mongodb.c:199:42: warning: Null pointer passed as an argument to a 'nonnull' parameter
uri_length = strlen(format_string) + strlen(node->host) + 5 + 1;
^~~~~~~~~~~~~~~~~~
2 warnings generated.
CCLD write_mongodb.la
write_mongodb.c: clang-format
Only build libplugin_mock.la during make check
Merge pull request #2315 from mcorbin/feat/riemann-microseconds-resolution
Add micro-seconds resolution in write_riemann
Add micro-seconds resolution in write_riemann
Merge pull request #2301 from rpv-tomsk/fix-apcups
apcups: Fix reconnect implementation
apcups: Fix reconnect implementation
ipvs plugin: remove custom kernel source support
Linux has shipped ipvs.h in its uapi for ages now.
Linux has shipped ipvs.h in its uapi for ages now.
configure.ac: minor cleanup
configure.ac: remove some whitespace
snmp_agent plugin: fix a few build warnings
```
CC src/snmp_agent_la-snmp_agent.lo
src/snmp_agent.c:166:25: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
for (int i = 0; i < dd->oids_len; i++) {
~ ^ ~~~~~~~~~~~~
src/snmp_agent.c:190:23: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
for (int i = 0; i < dd->oids_len; i++) {
~ ^ ~~~~~~~~~~~~
src/snmp_agent.c:289:37: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
for (i = 0; i < key_len && offset < oid->oid_len; i++)
~~~~~~ ^ ~~~~~~~~~~~~
src/snmp_agent.c:355:23: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
for (int i = 0; i < dd->oids_len; i++)
~ ^ ~~~~~~~~~~~~
src/snmp_agent.c:420:23: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
for (int i = 0; i < (*dd)->oids_len; i++)
~ ^ ~~~~~~~~~~~~~~~
src/snmp_agent.c:429:25: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
for (int i = 0; i < (*dd)->oids_len; i++)
~ ^ ~~~~~~~~~~~~~~~
src/snmp_agent.c:440:25: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
for (int i = 0; i < (*dd)->oids_len; i++)
~ ^ ~~~~~~~~~~~~~~~
src/snmp_agent.c:532:20: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
assert(oid_index < values_num);
~~~~~~~~~ ^ ~~~~~~~~~~
/usr/include/assert.h:89:5: note: expanded from macro 'assert'
((expr) \
^~~~
src/snmp_agent.c:584:25: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
for (int i = 0; i < dd->oids_len; i++) {
~ ^ ~~~~~~~~~~~~
src/snmp_agent.c:768:23: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
for (int i = 0; i < dd->oids_len; i++) {
~ ^ ~~~~~~~~~~~~
src/snmp_agent.c:806:25: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
for (int i = 0; i < dd->oids_len; i++) {
~ ^ ~~~~~~~~~~~~
src/snmp_agent.c:821:23: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
for (int i = 0; i < dd->oids_len; i++) {
~ ^ ~~~~~~~~~~~~
src/snmp_agent.c:1287:23: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
for (int i = 0; i < dd->oids_len; i++) {
~ ^ ~~~~~~~~~~~~
13 warnings generated.
```
```
CC src/snmp_agent_la-snmp_agent.lo
src/snmp_agent.c:166:25: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
for (int i = 0; i < dd->oids_len; i++) {
~ ^ ~~~~~~~~~~~~
src/snmp_agent.c:190:23: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
for (int i = 0; i < dd->oids_len; i++) {
~ ^ ~~~~~~~~~~~~
src/snmp_agent.c:289:37: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
for (i = 0; i < key_len && offset < oid->oid_len; i++)
~~~~~~ ^ ~~~~~~~~~~~~
src/snmp_agent.c:355:23: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
for (int i = 0; i < dd->oids_len; i++)
~ ^ ~~~~~~~~~~~~
src/snmp_agent.c:420:23: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
for (int i = 0; i < (*dd)->oids_len; i++)
~ ^ ~~~~~~~~~~~~~~~
src/snmp_agent.c:429:25: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
for (int i = 0; i < (*dd)->oids_len; i++)
~ ^ ~~~~~~~~~~~~~~~
src/snmp_agent.c:440:25: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
for (int i = 0; i < (*dd)->oids_len; i++)
~ ^ ~~~~~~~~~~~~~~~
src/snmp_agent.c:532:20: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
assert(oid_index < values_num);
~~~~~~~~~ ^ ~~~~~~~~~~
/usr/include/assert.h:89:5: note: expanded from macro 'assert'
((expr) \
^~~~
src/snmp_agent.c:584:25: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
for (int i = 0; i < dd->oids_len; i++) {
~ ^ ~~~~~~~~~~~~
src/snmp_agent.c:768:23: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
for (int i = 0; i < dd->oids_len; i++) {
~ ^ ~~~~~~~~~~~~
src/snmp_agent.c:806:25: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
for (int i = 0; i < dd->oids_len; i++) {
~ ^ ~~~~~~~~~~~~
src/snmp_agent.c:821:23: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
for (int i = 0; i < dd->oids_len; i++) {
~ ^ ~~~~~~~~~~~~
src/snmp_agent.c:1287:23: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
for (int i = 0; i < dd->oids_len; i++) {
~ ^ ~~~~~~~~~~~~
13 warnings generated.
```
ipvs plugin: minor cleanup
- Remove some Yoda conditionals
- Give some variables better names
- Use C99 designated initializers in some places.
- Remove some Yoda conditionals
- Give some variables better names
- Use C99 designated initializers in some places.
Merge pull request #2327 from rpv-tomsk/snmp-custom-port
snmp plugin: Option `Address` documented in more details.
snmp plugin: Option `Address` documented in more details.
email plugin: fix Yoda conditionals
Fix mismerge
exec plugin: remove some Yoda conditionals
Merge branch 'collectd-5.7'
Conflicts:
src/openldap.c
Conflicts:
src/openldap.c
Merge branch 'collectd-5.6' into collectd-5.7
email, exec and unixsock plugins: enlarge buffer for getgrnam_r result
Thanks to Jeremie Courreges-Anglas and Daniel Jakots.
Thanks to Jeremie Courreges-Anglas and Daniel Jakots.
email, exec and unixsock plugins: fix error handling
Diff from Jeremie Courreges-Anglas, via Daniel Jakots
Diff from Jeremie Courreges-Anglas, via Daniel Jakots
Merge pull request #2331 from mfournier/ldap_unbind-segfault
openldap: check ld structure before passing it to ldap_unbind()
openldap: check ld structure before passing it to ldap_unbind()
openldap: check ld structure before passing it to ldap_unbind()
This prevents collectd from segfaulting when the ldap session setup
fails before opening a connection to openldap (syntax error in the URL
option for example).
This prevents collectd from segfaulting when the ldap session setup
fails before opening a connection to openldap (syntax error in the URL
option for example).
snmp: Option `Address` documented in more details.
As described at http://net-snmp.sourceforge.net/dev/agent/structsnmp__session.html,
it may include transport specifier and/or port number.
Configuration examples are updated too.
Closes: #2302
As described at http://net-snmp.sourceforge.net/dev/agent/structsnmp__session.html,
it may include transport specifier and/or port number.
Configuration examples are updated too.
Closes: #2302
Merge pull request #2320 from maryamtahhan/feat_snmp_compilation_issue
SNMP Agent: Fix compilation issue of snmp_agent plugin
SNMP Agent: Fix compilation issue of snmp_agent plugin
SNMP Agent: Fix compilation issue on Net-SNMP v5.4.3
The compilation of SNMP Agent fails on older version of
Net-SNMP (5.4.3).
Signed-off-by: Mytnyk, VolodymyrX <volodymyrx.mytnyk@intel.com>
The compilation of SNMP Agent fails on older version of
Net-SNMP (5.4.3).
Signed-off-by: Mytnyk, VolodymyrX <volodymyrx.mytnyk@intel.com>
Add micro-seconds resolution in write_riemann
riemann-c-client 1.10.0 and higher supports micro-seconds time
resolution for Riemann events.
riemann-c-client 1.10.0 and higher supports micro-seconds time
resolution for Riemann events.
Bump version to 5.7.2; Update ChangeLog.
Merge branch 'collectd-5.7'
Conflicts:
src/intel_rdt.c
Conflicts:
src/intel_rdt.c
Merge pull request #2310 from octo/ff/intel_rdt
intel_rdt plugin: Remove unnecessary goto.
intel_rdt plugin: Remove unnecessary goto.
intel_rdt plugin: Remove unnecessary goto.
Merge branch 'collectd-5.7'
Merge branch 'collectd-5.6' into collectd-5.7
Bind plugin: plug a few leaks
Fixes: #2303
Fixes: #2303
Merge pull request #2307 from saiarcot895/mongo-mem-leak
Use bson_destroy instead of bson_free, and fix memleak issue.
Use bson_destroy instead of bson_free, and fix memleak issue.
Use bson_destroy instead of bson_free, and fix memleak issue.
Merge pull request #2304 from archii/fix-ipmi-docs-typo
Fix ipmi docs typo
Fix ipmi docs typo
Merge pull request #1 from archii/archii-fix-docs-typo-1
fix typo in collectd.conf.pod
fix typo in collectd.conf.pod
fix typo in collectd.conf.pod
python plugin: stop disabling strict aliasing
According to https://bugs.python.org/issue1718153, this has been fixed
in python 2.6, the oldest version we support.
According to https://bugs.python.org/issue1718153, this has been fixed
in python 2.6, the oldest version we support.
configure.ac: slightly tweak dpdk check
configure.ac: keep libs sorted
configure.ac: detect compiler vendor
I'll use this in followup patches to detect if the compiler supports
various warning flags. For example, a long standing issue is that older
version of the Sun studio compiler doesn't support -Werror.
I'll use this in followup patches to detect if the compiler supports
various warning flags. For example, a long standing issue is that older
version of the Sun studio compiler doesn't support -Werror.
configure.ac: no need for body for preproc test
configure.ac: use preprocessor to detect libpqos version
No need to run the program.
No need to run the program.
configure.ac: use preprocessor to detect dpdk version
The test doesn't run any code, so no need to compile it.
The test doesn't run any code, so no need to compile it.
configure.ac: replace AS_IF with normal test
AS_IF is slightly more portable, but slightly less readable.
AS_IF is slightly more portable, but slightly less readable.
configure.ac: replace last few tabs with spaces
configure.ac: fix libpqos detection style
snmp-agent: fix build on RHEL6
libnetsnmpagent.so from net-snmp 5.5 needs some symbols from libnetsnmphelpers.so,
but does not link against it on RHEL5.
Work around this by looking for one of those symbols in the helper lib,
and if found, link against it.
Later versions of net-snmp seem to have moved those symbols to
libnetsnmpagent.so, so it's not an issue there.
libnetsnmpagent.so from net-snmp 5.5 needs some symbols from libnetsnmphelpers.so,
but does not link against it on RHEL5.
Work around this by looking for one of those symbols in the helper lib,
and if found, link against it.
Later versions of net-snmp seem to have moved those symbols to
libnetsnmpagent.so, so it's not an issue there.
configure.ac: remove unneeded include
All files in AC_CONFIG_MACRO_DIR are included by default.
All files in AC_CONFIG_MACRO_DIR are included by default.
configure.ac: improve libnetsnmpagent detection
Turn it into a separate check, which also makes it possible to disable
it.
snmp_agent and snmp are separate plugins, and on at least Fedora are
packaged separately.
A beneficial side effect is that this reduces overlinking of snmp.so
with libnetsnmpagent.so
Turn it into a separate check, which also makes it possible to disable
it.
snmp_agent and snmp are separate plugins, and on at least Fedora are
packaged separately.
A beneficial side effect is that this reduces overlinking of snmp.so
with libnetsnmpagent.so
snmp-agent: check for the right header
We never include net-snmp/agent/agent_module_config.h
We never include net-snmp/agent/agent_module_config.h
configure.ac: fix style for snmpagent plugin
configure.ac: fix overquoting
apcups: Fix reconnect implementation
Implementation was broken, it doesn't reconnects as planned.
Implementation was broken, it doesn't reconnects as planned.
format_graphite: Error if call to uc_get_rate fails to return a value.
This prevents a wrong value being sent to graphite for DERIVE types.
See #2209
Signed-off-by: Florian Forster <octo@collectd.org>
This prevents a wrong value being sent to graphite for DERIVE types.
See #2209
Signed-off-by: Florian Forster <octo@collectd.org>
snmp plugin: Avoid allocation of temporary buffers on the heap.
src/daemon/utils_cache.c: Add debug message for lookup of missing metrics.
Issue: #1234
Issue: #1234
src/daemon/utils_cache.c: Remove unnecessary cast.
(data_set_t).ds_num has been changed to be a size_t.
(data_set_t).ds_num has been changed to be a size_t.
Merge remote-tracking branch 'github/pr/2285'
Merge pull request #2290 from BrandonArp/snmp_agent_rpm
allow configuration of snmp_agent in rpm builds
allow configuration of snmp_agent in rpm builds
allow configuration of snmp_agent in rpm builds
Merge pull request #2287 from BrandonArp/fix_am_1_11
fix build on automake 1.11
fix build on automake 1.11
curl_json plugin: Work around a limitation in EPEL6's GCC.
Merge remote-tracking branch 'github/pr/2105'
Merge remote-tracking branch 'github/pr/2190'
chrony plugin: Re-run clang-format.
memcached plugin: Expand "del" to "delete" for clarity.
memcached plugin: Add delete_{hits,misses} metrics.
src/daemon/utils_cache.c: Read time *after* acquiring the lock.
Fixes: #1193
Fixes: #1193
fix build on automake 1.11
snmp_agent plugin: Don't export the g_agent variable.
snmp_agent plugin: Remove parenthesis around return values.
See also: #2277
See also: #2277
snmp_agent plugin: Format with clang-format.
Merge remote-tracking branch 'github/pr/2277'
amqp plugin: Enable the "ExchangeType" for publishers, too.
Fixes: #2286
Fixes: #2286
curl_json plugin: Refactor the way trees/keys are stored.
Previously, keys had a "magic" as their first member which was used to
differentiate between the two types when they were returned from the
binary search tree.
This patch creates a new struct, cj_tree_entry_t, which includes an enum
identifying which union member is valid.
Previously, keys had a "magic" as their first member which was used to
differentiate between the two types when they were returned from the
binary search tree.
This patch creates a new struct, cj_tree_entry_t, which includes an enum
identifying which union member is valid.
curl_json plugin: Expand unit tests.
This adds various tests involving arrays.
Issue: #2266
This adds various tests involving arrays.
Issue: #2266
Merge branch 'collectd-5.7'
Merge branch 'collectd-5.6' into collectd-5.7
curl_json plugin: Fix array index and key handling.
Previously, the "key" was loaded by calling cj_cb_map_key() from
cj_cb_inc_array_index(). That means that the key for the previous element
was loaded as the array index was updated for the next element, resulting
in an off-by-one error. Also the key was not unset in time, resulting in
two metrics with the same identifier being created.
This patch fixes this with the following changes:
* cj_advance_array() (nee cj_cb_inc_array_index()) now loads the key for
the new index position instead of the previous one.
* The initial "0" key is loaded from cj_cb_start_array().
* cj_advance_array() always updates the key. The "update_key" argument
has been removed.
* Refactoring: key loading has been moved out of cj_cb_map_key() and
into its own function, cj_load_key().
Unit tests are in a separate commit for easier cherry-picking.
Fixes: #2266
Previously, the "key" was loaded by calling cj_cb_map_key() from
cj_cb_inc_array_index(). That means that the key for the previous element
was loaded as the array index was updated for the next element, resulting
in an off-by-one error. Also the key was not unset in time, resulting in
two metrics with the same identifier being created.
This patch fixes this with the following changes:
* cj_advance_array() (nee cj_cb_inc_array_index()) now loads the key for
the new index position instead of the previous one.
* The initial "0" key is loaded from cj_cb_start_array().
* cj_advance_array() always updates the key. The "update_key" argument
has been removed.
* Refactoring: key loading has been moved out of cj_cb_map_key() and
into its own function, cj_load_key().
Unit tests are in a separate commit for easier cherry-picking.
Fixes: #2266
Merge pull request #2283 from octo/ff/valgrind
valgrind.FreeBSD.suppress: parse_value(): Always suppress the strlen(…
valgrind.FreeBSD.suppress: parse_value(): Always suppress the strlen(…
valgrind.FreeBSD.suppress: parse_value(): Always suppress the strlen() false positive.
Previously, this was only suppressed when called via parse_values()
(note the plural).
Fixes: #2282
Previously, this was only suppressed when called via parse_values()
(note the plural).
Fixes: #2282
curl_json plugin: Implement a unit test.
Issue: #2266
Issue: #2266
src/testing.h: Fix result of EXPECT_EQ_DOUBLE() when actual is NAN.
src/daemon/plugin_mock.c: Add stubs for additional functions.
curl_json plugin: Split cj_append_key() out of cj_config_add_key().
curl_json plugin: Use struct initializer.
curl_json plugin: Remove unused field from cj_t.
Merge pull request #2279 from octo/ff/virt
virt plugin: Replace virTypedParamsFree() with virTypedParamsClear() …
virt plugin: Replace virTypedParamsFree() with virTypedParamsClear() …
virt plugin: Replace virTypedParamsFree() with virTypedParamsClear() and sfree().
The parameters are allocated with calloc(), freeing them with a library
function is unintuitive at best. Also, the library functions appears to
be missing the appropriate function attribute to tell clang / GCC that
it will free the pointer, resulting in a false-positive scan-build
report.
The parameters are allocated with calloc(), freeing them with a library
function is unintuitive at best. Also, the library functions appears to
be missing the appropriate function attribute to tell clang / GCC that
it will free the pointer, resulting in a false-positive scan-build
report.
collectd.conf(5): Fix typo ("queries" vs. "queried").
By avoiding the word: "metrics" is bettern than "statistics".
By avoiding the word: "metrics" is bettern than "statistics".
Merge pull request #2278 from octo/ff/perl
perl plugin: Fix potential double-free.
perl plugin: Fix potential double-free.
perl plugin: Fix potential double-free.
The av2notification_meta() function updated it's parameter by doing
(*m) = malloc();
Afterwards, if an error occurred, it would call `free(*m);` and (potentially)
return, leaving an invalid pointer stored in `m`. The caller would then try to
free the returned pointer because it was non-NULL.
This patch fixes this by doing several code cleanups:
* The meta argument is not updated unnecessarily. Instead, a local variable
is allocated and used within the loop and only on success is the return
pointer updated.
* Introduce additional local variables instead of re-using the `tmp` variable
multiple times.
* Name the variable pointing to the end of the linked list appropriately
`tail` and remove one level of indirection. Reading code that is using
pointers to pointers is unnecessarily hard.
The av2notification_meta() function updated it's parameter by doing
(*m) = malloc();
Afterwards, if an error occurred, it would call `free(*m);` and (potentially)
return, leaving an invalid pointer stored in `m`. The caller would then try to
free the returned pointer because it was non-NULL.
This patch fixes this by doing several code cleanups:
* The meta argument is not updated unnecessarily. Instead, a local variable
is allocated and used within the loop and only on success is the return
pointer updated.
* Introduce additional local variables instead of re-using the `tmp` variable
multiple times.
* Name the variable pointing to the end of the linked list appropriately
`tail` and remove one level of indirection. Reading code that is using
pointers to pointers is unnecessarily hard.
Remove parentheses around return arguments
They don't do any harm but they are not really needed either.
Contributors are not used to following this style, and reviewers have to
keep pointing it out in reviews. This takes up valuable time for both
the contributor and the reviewer and distracts from the more important
issues.
I used the following Coccinelle patch:
@@
expression e;
@@
- return (e);
+ return e;
spatch is having trouble with some files so I have cleaned up the rest
with a few regexes.
They don't do any harm but they are not really needed either.
Contributors are not used to following this style, and reviewers have to
keep pointing it out in reviews. This takes up valuable time for both
the contributor and the reviewer and distracts from the more important
issues.
I used the following Coccinelle patch:
@@
expression e;
@@
- return (e);
+ return e;
spatch is having trouble with some files so I have cleaned up the rest
with a few regexes.
Merge branch 'collectd-5.7'
Merge pull request #2275 from octo/ff/prometheus
write_prometheus plugin: Fix incorrect use of realloc().
write_prometheus plugin: Fix incorrect use of realloc().
Merge pull request #2274 from octo/ff/putval
src/utils_cmd_putval.c: Fix multi-value PUTVAL.
src/utils_cmd_putval.c: Fix multi-value PUTVAL.