projects
/
collectd.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
36d1b24
)
Fix memory leak in redis.c
author
Andrés J. Díaz
<ajdiaz@connectical.com>
Wed, 2 Mar 2016 18:21:56 +0000
(19:21 +0100)
committer
Ruben Kerkhof
<ruben@rubenkerkhof.com>
Thu, 3 Mar 2016 09:56:50 +0000
(10:56 +0100)
src/redis.c
patch
|
blob
|
history
diff --git
a/src/redis.c
b/src/redis.c
index
3f78bc3
..
2586ca0
100644
(file)
--- a/
src/redis.c
+++ b/
src/redis.c
@@
-399,25
+399,27
@@
static int redis_read (void) /* {{{ */
if (strlen (rn->passwd) > 0)
{
if (strlen (rn->passwd) > 0)
{
- DEBUG ("redis plugin: authenticanting node `%s' passwd(%s).", rn->name, rn->passwd);
- rr = redisCommand (rh, "AUTH %s", rn->passwd);
+ DEBUG ("redis plugin: authenticating node `%s' passwd(%s).", rn->name, rn->passwd);
- if (
rr == NULL || rr->type != REDIS_REPLY_STATUS
)
+ if (
(rr = redisCommand (rh, "AUTH %s", rn->passwd)) == NULL
)
{
WARNING ("redis plugin: unable to authenticate on node `%s'.", rn->name);
{
WARNING ("redis plugin: unable to authenticate on node `%s'.", rn->name);
- if (rr != NULL)
- freeReplyObject (rr);
+ goto redis_fail;
+ }
- redisFree (rh);
- continue;
+ if (rr->type != REDIS_REPLY_STATUS)
+ {
+ WARNING ("redis plugin: invalid authentication on node `%s'.", rn->name);
+ goto redis_fail;
}
}
+
+ freeReplyObject (rr);
}
if ((rr = redisCommand(rh, "INFO")) == NULL)
{
}
if ((rr = redisCommand(rh, "INFO")) == NULL)
{
- WARNING ("redis plugin: unable to connect to node `%s'.", rn->name);
- redisFree (rh);
- continue;
+ WARNING ("redis plugin: unable to get info from node `%s'.", rn->name);
+ goto redis_fail;
}
redis_handle_info (rn->name, rr->str, "uptime", NULL, "uptime_in_seconds", DS_TYPE_GAUGE);
}
redis_handle_info (rn->name, rr->str, "uptime", NULL, "uptime_in_seconds", DS_TYPE_GAUGE);
@@
-434,11
+436,12
@@
static int redis_read (void) /* {{{ */
redis_handle_info (rn->name, rr->str, "pubsub", "patterns", "pubsub_patterns", DS_TYPE_GAUGE);
redis_handle_info (rn->name, rr->str, "current_connections", "slaves", "connected_slaves", DS_TYPE_GAUGE);
redis_handle_info (rn->name, rr->str, "pubsub", "patterns", "pubsub_patterns", DS_TYPE_GAUGE);
redis_handle_info (rn->name, rr->str, "current_connections", "slaves", "connected_slaves", DS_TYPE_GAUGE);
- freeReplyObject (rr);
-
for (rq = rn->queries; rq != NULL; rq = rq->next)
redis_handle_query(rh, rn, rq);
for (rq = rn->queries; rq != NULL; rq = rq->next)
redis_handle_query(rh, rn, rq);
+redis_fail:
+ if (rr != NULL)
+ freeReplyObject (rr);
redisFree (rh);
}
redisFree (rh);
}