diff --git a/src/basic/env-util.c b/src/basic/env-util.c index 128102c688..8cc7b72511 100644 --- a/src/basic/env-util.c +++ b/src/basic/env-util.c @@ -514,6 +514,10 @@ char *strv_env_get_n(char **l, const char *name, size_t k, unsigned flags) { if (flags & REPLACE_ENV_USE_ENVIRONMENT) { const char *t; + /* Safety check that the name is not overly long, before we do a stack allocation */ + if (k > (size_t) sysconf(_SC_ARG_MAX) - 2) + return NULL; + t = strndupa_safe(name, k); return getenv(t); };