diff options
| author | Yuri Pankov <yuripv@FreeBSD.org> | 2021-04-11 22:02:12 +0000 |
|---|---|---|
| committer | Yuri Pankov <yuripv@FreeBSD.org> | 2021-04-15 19:15:51 +0000 |
| commit | c6dcae2dfa3b96edc1fd8bbb6254c48fafbc8cd3 (patch) | |
| tree | fcf7cd9316c41be867d95c30493e771bbcb020b4 | |
| parent | bda3bf09d82daf4352691a7b3a5b0e1cff66a5fd (diff) | |
| download | src-c6dcae2dfa3b96edc1fd8bbb6254c48fafbc8cd3.tar.gz src-c6dcae2dfa3b96edc1fd8bbb6254c48fafbc8cd3.zip | |
setclassenvironment: trim leading spaces in variable names
Trim leading spaces in variable names when the list is e.g.
pretty-formatted in /etc/login.conf or ~/.login_conf.
PR: 247947
Reviewed by: allanjude
Differential Revision: https://reviews.freebsd.org/D25649
(cherry picked from commit eeaf9d562fe137e0c52b8c346742dccfc8bde015)
| -rw-r--r-- | lib/libutil/login_class.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/libutil/login_class.c b/lib/libutil/login_class.c index fd0b232d0a43..38666bc8e3d3 100644 --- a/lib/libutil/login_class.c +++ b/lib/libutil/login_class.c @@ -231,12 +231,17 @@ setclassenvironment(login_cap_t *lc, const struct passwd * pwd, int paths) while (*set_env != NULL) { char *p = strchr(*set_env, '='); - if (p != NULL) { /* Discard invalid entries */ + if (p != NULL && p != *set_env) { /* Discard invalid entries */ + const char *ep; char *np; *p++ = '\0'; + /* Strip leading spaces from variable name */ + ep = *set_env; + while (*ep == ' ' || *ep == '\t') + ep++; if ((np = substvar(p, pwd, hlen, pch, nlen)) != NULL) { - setenv(*set_env, np, 1); + setenv(ep, np, 1); free(np); } } |
