MEDIUM: cfgparse: warn when using user/group when built statically

In issue #3013, an user observed a crash at startup of haproxy when
building statically and using the "user" global section.

This is a known problem of the glibc and the linker even warn about
this:

> warning: Using 'getgrnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
> warning: Using 'getpwnam' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

Let's emit a warning when using user/group in this case.
This commit is contained in:
William Lallemand 2025-09-03 14:45:00 +02:00
parent 3354719709
commit 554a15562f

View File

@ -226,6 +226,15 @@ int cfg_parse_global(const char *file, int linenum, char **args, int kwm)
err_code |= ERR_ALERT;
goto out;
}
if (build_is_static) {
ha_warning("parsing [%s:%d] : haproxy is built statically, the "
"libc might crash when resolving \"user %s\", "
"please use \"uid\" instead\n",
file, linenum, args[1]);
err_code |= ERR_WARN;
}
errno = 0;
ha_user = getpwnam(args[1]);
if (ha_user != NULL) {
@ -245,6 +254,16 @@ int cfg_parse_global(const char *file, int linenum, char **args, int kwm)
err_code |= ERR_ALERT;
goto out;
}
if (build_is_static) {
ha_warning("parsing [%s:%d] : haproxy is built statically, the "
"libc might crash when resolving \"group %s\", "
"please use \"gid\" instead\n",
file, linenum, args[1]);
err_code |= ERR_WARN;
}
errno = 0;
ha_group = getgrnam(args[1]);
if (ha_group != NULL) {