From 0288d36e56bab788da3a494142bf9070f9f3aaf9 Mon Sep 17 00:00:00 2001 From: Christian Heimes Date: Feb 22 2018 10:43:21 +0000 Subject: Keep LC_*, LANG, set default LC_CTYPE Python 3.6 and earlier Python 3 require a correctly configured locale to support non-ASCII values for file names and other parameters. Certmonger now passes down LANG and LC_* env vars. It also sets LC_CTYPE=C.UTF-8 as default in case no LC_CTYPE is set. Fixes: https://pagure.io/certmonger/issue/94 Signed-off-by: Christian Heimes --- diff --git a/src/subproc.c b/src/subproc.c index f140229..e49e376 100644 --- a/src/subproc.c +++ b/src/subproc.c @@ -74,6 +74,13 @@ cm_subproc_propagate_environment(const char *p) (strncmp(p, CERTMONGER_PVT_ADDRESS_ENV, equal) == 0)) { return equal; } + if ((strlen("LANG") == equal) && (strncmp(p, "LANG", equal) == 0)) { + return equal; + } + if ((equal > 4) && + (strncmp(p, "LC_", 3) == 0)) { + return equal; + } if ((equal > 6) && ((strncmp(p + equal - 6, "_PROXY", 6) == 0) || (strncmp(p + equal - 6, "_proxy", 6) == 0))) { @@ -158,6 +165,8 @@ cm_subproc_start(int (*cb)(int fd, setenv("PATH", _PATH_STDPATH, 1); setenv("SHELL", _PATH_BSHELL, 1); setenv("TERM", "dumb", 1); + /* sane default, can be overruled by childenv */ + setenv("LC_CTYPE", "C.UTF-8", 1); if (configdir != NULL) { setenv(CM_STORE_CONFIG_DIRECTORY_ENV, configdir, 1);