From: Alan T. DeKok Date: Thu, 5 Sep 2019 20:07:25 +0000 (-0400) Subject: allow $ENV{...} too X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2e382fc2e0ec90eae66e227938932dc8dbe67ff4;p=thirdparty%2Ffreeradius-server.git allow $ENV{...} too --- diff --git a/src/lib/server/cond_tokenize.c b/src/lib/server/cond_tokenize.c index fd384c0121a..ee2cd6dda46 100644 --- a/src/lib/server/cond_tokenize.c +++ b/src/lib/server/cond_tokenize.c @@ -585,7 +585,13 @@ static ssize_t cond_preparse(char const **out, size_t *outlen, char const *start if (slen <= 0) return slen; p = strchr(start, '$'); - if (!p || (p[1] != '{')) return slen; + if (!p) return slen; + + if (!((p[1] == '{') || + ((p[1] == 'E') && (p[2] == 'N') && (p[3] == 'V') && + (p[4] == '{')))) { + return slen; + } /* * cf_expand_variables() doesn't take a length. Oh well... @@ -600,7 +606,7 @@ static ssize_t cond_preparse(char const **out, size_t *outlen, char const *start if (!cf_expand_variables(filename, &lineno, parent, buffer, sizeof(buffer), expanded, NULL)) { *error = "Failed expanding configuration variable"; return -1; - } + } talloc_free(expanded); /* diff --git a/src/lib/server/tmpl.c b/src/lib/server/tmpl.c index a1457e686d0..992fc4bfe90 100644 --- a/src/lib/server/tmpl.c +++ b/src/lib/server/tmpl.c @@ -3005,14 +3005,23 @@ ssize_t tmpl_preparse(char const **out, size_t *outlen, char const *start, * @todo - make this configurable */ case '$': - if (p[1] != '{') { + if (p[1] == '{') { + *out = p; + *type = T_BARE_WORD; + + p += 2; + + } else if ((p[1] == 'E') && (p[2] == 'N') && (p[3] == 'V') && + (p[4] == '{')) { + *out = p; + *type = T_BARE_WORD; + + p += 2; + + } else { return_P("Unexpected '$'"); } - *out = p; - *type = T_BARE_WORD; - - p += 2; while (*p && (*p != '}')) { if (isspace((int) *p)) { return_P("Unexpected space in variable expansion");