summaryrefslogtreecommitdiffstats
path: root/usr.sbin/cron/lib
diff options
context:
space:
mode:
authorthomas <thomas@FreeBSD.org>2003-02-10 11:20:58 +0000
committerthomas <thomas@FreeBSD.org>2003-02-10 11:20:58 +0000
commit8638b961ca051972aa17ca0fd476f16998b984a0 (patch)
tree6eaf7787c0804164bcd7066c74914a16a4dbcca5 /usr.sbin/cron/lib
parent6a79467bbde44ba077bc5179639dd9dc5565c929 (diff)
downloadFreeBSD-src-8638b961ca051972aa17ca0fd476f16998b984a0.zip
FreeBSD-src-8638b961ca051972aa17ca0fd476f16998b984a0.tar.gz
Allow inner whitespace in the right-hand side of an environment variable
assignment even if it is not quoted (as advertised by the man page). This fixes a regression wrt RELENG_4 introduced in rev. 1.11. Problem noted and patch tested by: CHOI Junho <cjh@kr.FreeBSD.org> Reviewed by: roberto
Diffstat (limited to 'usr.sbin/cron/lib')
-rw-r--r--usr.sbin/cron/lib/env.c27
1 files changed, 17 insertions, 10 deletions
diff --git a/usr.sbin/cron/lib/env.c b/usr.sbin/cron/lib/env.c
index c2adb49..fd35817 100644
--- a/usr.sbin/cron/lib/env.c
+++ b/usr.sbin/cron/lib/env.c
@@ -193,14 +193,16 @@ load_env(envstr, f)
break;
}
} else {
- if (isspace (*c)) {
- state++;
- c++;
- break;
- }
- if (state == NAME && *c == '=') {
- state++;
- break;
+ if (state == NAME) {
+ if (isspace (*c)) {
+ c++;
+ state++;
+ break;
+ }
+ if (*c == '=') {
+ state++;
+ break;
+ }
}
}
*str++ = *c++;
@@ -232,9 +234,14 @@ load_env(envstr, f)
Set_LineNum(fileline);
return (FALSE);
}
+ if (state == VALUE) {
+ /* End of unquoted value: trim trailing whitespace */
+ c = val + strlen (val);
+ while (c > val && isspace (*(c - 1)))
+ *(--c) = '\0';
+ }
- /* 2 fields from parser; looks like an env setting
- */
+ /* 2 fields from parser; looks like an env setting */
if (strlen(name) + 1 + strlen(val) >= MAX_ENVSTR-1)
return (FALSE);
OpenPOWER on IntegriCloud