]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
allow $ENV{...} too
authorAlan T. DeKok <aland@freeradius.org>
Thu, 5 Sep 2019 20:07:25 +0000 (16:07 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Thu, 5 Sep 2019 20:11:21 +0000 (16:11 -0400)
src/lib/server/cond_tokenize.c
src/lib/server/tmpl.c

index fd384c0121af491bf01411d4e704b82621741bdc..ee2cd6dda4656bb20c38ad9d9c677c78c7601c47 100644 (file)
@@ -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);
 
        /*
index a1457e686d0091e26986c252b9f31c6584da95cd..992fc4bfe90e329c8dfa93e33ba883c36648cfb0 100644 (file)
@@ -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");