mirror of
https://github.com/systemd/systemd.git
synced 2025-03-09 12:58:26 +03:00
execute: filter out "." for ".." in EnvironmentFile= globs too
This doesn't really matter much, only in case somebody would use something strange like EnvironmentFile=/etc/something/.* Make sure that "." and ".." is not returned by that glob. This makes all our globbing patterns behave the same.
This commit is contained in:
parent
84e72b5ef4
commit
d8c92e8bc7
@ -3231,11 +3231,10 @@ int exec_context_load_environment(Unit *unit, const ExecContext *c, char ***l) {
|
|||||||
|
|
||||||
STRV_FOREACH(i, c->environment_files) {
|
STRV_FOREACH(i, c->environment_files) {
|
||||||
char *fn;
|
char *fn;
|
||||||
int k;
|
int k, n;
|
||||||
bool ignore = false;
|
bool ignore = false;
|
||||||
char **p;
|
char **p;
|
||||||
_cleanup_globfree_ glob_t pglob = {};
|
_cleanup_globfree_ glob_t pglob = {};
|
||||||
int count, n;
|
|
||||||
|
|
||||||
fn = *i;
|
fn = *i;
|
||||||
|
|
||||||
@ -3253,23 +3252,19 @@ int exec_context_load_environment(Unit *unit, const ExecContext *c, char ***l) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Filename supports globbing, take all matching files */
|
/* Filename supports globbing, take all matching files */
|
||||||
errno = 0;
|
k = safe_glob(fn, 0, &pglob);
|
||||||
if (glob(fn, 0, NULL, &pglob) != 0) {
|
if (k < 0) {
|
||||||
if (ignore)
|
if (ignore)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
strv_free(r);
|
strv_free(r);
|
||||||
return errno > 0 ? -errno : -EINVAL;
|
return k;
|
||||||
}
|
}
|
||||||
count = pglob.gl_pathc;
|
|
||||||
if (count == 0) {
|
|
||||||
if (ignore)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
strv_free(r);
|
/* When we don't match anything, -ENOENT should be returned */
|
||||||
return -EINVAL;
|
assert(pglob.gl_pathc > 0);
|
||||||
}
|
|
||||||
for (n = 0; n < count; n++) {
|
for (n = 0; n < pglob.gl_pathc; n++) {
|
||||||
k = load_env_file(NULL, pglob.gl_pathv[n], NULL, &p);
|
k = load_env_file(NULL, pglob.gl_pathv[n], NULL, &p);
|
||||||
if (k < 0) {
|
if (k < 0) {
|
||||||
if (ignore)
|
if (ignore)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user