A segfault can occur during at the initialization phase, when an unknown
"mailers" name is configured. This happens when "email-alert myhostname" is not
set, where a direct pointer to an array is used instead of copying the string,
causing the segfault when haproxy tries to free the memory.

This is a minor issue because the configuration is invalid and a fatal error
will remain, but it should be fixed to prevent reload issues.

Example of minimal configuration to reproduce the bug :
    backend example
        email-alert mailers NOT_FOUND
        email-alert from foo@localhost
        email-alert to bar@localhost

This fix must be backported to 1.6.
---
 src/cfgparse.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/cfgparse.c b/src/cfgparse.c
index 9ebae2c..97f4243 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -7470,7 +7470,7 @@ int check_config_validity()
                            free_email_alert(curproxy);
                    }
                    if (!curproxy->email_alert.myhostname)
-                           curproxy->email_alert.myhostname = hostname;
+                           curproxy->email_alert.myhostname = strdup(hostname);
                }
 
                if (curproxy->check_command) {
-- 
2.6.2


Reply via email to