BUG/MINOR: fix a segfault when parsing a config with undeclared peers
Baptiste Assmann reported that a config where a non-existing peers
section is referenced by a stick-table causes a segfault after displaying
the error. This is caused by the freeing of the peers. Setting it to NULL
after displaying the error fixes the issue.
diff --git a/src/cfgparse.c b/src/cfgparse.c
index 5ddfbe2..bf76185 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -5884,11 +5884,15 @@
if (!curpeers) {
Alert("Proxy '%s': unable to find sync peers '%s'.\n",
curproxy->id, curproxy->table.peers.name);
+ free((void *)curproxy->table.peers.name);
+ curproxy->table.peers.p = NULL;
cfgerr++;
}
else if (!curpeers->peers_fe) {
Alert("Proxy '%s': unable to find local peer '%s' in peers section '%s'.\n",
curproxy->id, localpeer, curpeers->id);
+ free((void *)curproxy->table.peers.name);
+ curproxy->table.peers.p = NULL;
cfgerr++;
}
}