BUG/MINOR: log: fix memory leak on logsrv parse error
In case of parsing error on logsrv, we can leave parse_logsrv() without
releasing logsrv->ring_name or smp_rgs. Let's free them on the error path.
This should fix issue #926 detected by Coverity.
The impact is only a tiny leak just before reporting a fatal error, so it
will essentially annoy valgrind.
This can be backported to 2.0 (just drop the ring part).
diff --git a/src/log.c b/src/log.c
index ffd8263..55fa4d5 100644
--- a/src/log.c
+++ b/src/log.c
@@ -799,6 +799,7 @@
*/
int parse_logsrv(char **args, struct list *logsrvs, int do_del, char **err)
{
+ struct smp_log_range *smp_rgs = NULL;
struct sockaddr_storage *sk;
struct logsrv *logsrv = NULL;
int port1, port2;
@@ -905,7 +906,6 @@
if (strcmp(args[cur_arg], "sample") == 0) {
unsigned low, high;
char *p, *beg, *end, *smp_sz_str;
- struct smp_log_range *smp_rgs = NULL;
size_t smp_rgs_sz = 0, smp_sz = 0, new_smp_sz;
p = args[cur_arg+1];
@@ -1038,6 +1038,8 @@
return 1;
error:
+ free(smp_rgs);
+ free(logsrv->ring_name);
free(logsrv);
return 0;
}