From: William Lallemand Date: Wed, 3 Sep 2025 12:45:00 +0000 (+0200) Subject: MEDIUM: cfgparse: warn when using user/group when built statically X-Git-Tag: v3.3-dev8~31 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=554a15562f61e2a47b79df9c9970e2b4746e85f1;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/src/cfgparse-global.c b/src/cfgparse-global.c index c7203b76d..0100bf477 100644 --- a/src/cfgparse-global.c +++ b/src/cfgparse-global.c @@ -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) {