From d8e028e06900b781bebfe2f52cc7254444a31716 Mon Sep 17 00:00:00 2001 From: fbrosson Date: Sun, 3 Jan 2016 14:48:07 +0000 Subject: [PATCH] [mod_ssi] enhance support for ssi vars Try ssi_vars if ssi_cgi_env does not have a matching var name. Allow var names to also include digits after the initial letter or underscore. From: fbrosson git-svn-id: svn://svn.lighttpd.net/lighttpd/branches/lighttpd-1.4.x@3069 152afb58-edef-0310-8abb-c4023f1b3aa9 --- NEWS | 1 + src/mod_ssi.c | 5 +++-- src/mod_ssi_expr.c | 4 +++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/NEWS b/NEWS index 179bac04..34251a16 100644 --- a/NEWS +++ b/NEWS @@ -4,6 +4,7 @@ NEWS ==== - 1.4.40 + * [mod_ssi] enhance support for ssi vars (thx fbrosson) - 1.4.39 - 2016-01-02 * [core] fix memset_s call (fixes #2698) diff --git a/src/mod_ssi.c b/src/mod_ssi.c index 8afacc43..f3f255b7 100644 --- a/src/mod_ssi.c +++ b/src/mod_ssi.c @@ -457,9 +457,10 @@ static int process_ssi_stmt(server *srv, connection *con, plugin_data *p, const } default: { data_string *ds; - /* check if it is a cgi-var */ + /* check if it is a cgi-var or a ssi-var */ - if (NULL != (ds = (data_string *)array_get_element(p->ssi_cgi_env, var_val))) { + if (NULL != (ds = (data_string *)array_get_element(p->ssi_cgi_env, var_val)) || + NULL != (ds = (data_string *)array_get_element(p->ssi_vars, var_val))) { chunkqueue_append_mem(con->write_queue, CONST_BUF_LEN(ds->value)); } else { chunkqueue_append_mem(con->write_queue, CONST_STR_LEN("(none)")); diff --git a/src/mod_ssi_expr.c b/src/mod_ssi_expr.c index 4f0605c9..256c960a 100644 --- a/src/mod_ssi_expr.c +++ b/src/mod_ssi_expr.c @@ -207,7 +207,9 @@ static int ssi_expr_tokenizer(server *srv, connection *con, plugin_data *p, buffer_copy_string_len(token, t->input + t->offset + 2, i-3); } else { - for (i = 1; isalpha(t->input[t->offset + i]) || t->input[t->offset + i] == '_'; i++); + for (i = 1; isalpha(t->input[t->offset + i]) || + t->input[t->offset + i] == '_' || + ((i > 1) && isdigit(t->input[t->offset + i])); i++); buffer_copy_string_len(token, t->input + t->offset + 1, i-1); }