diff options
Diffstat (limited to 'source4/lib/appweb/esp')
-rw-r--r-- | source4/lib/appweb/esp/esp.c | 12 | ||||
-rw-r--r-- | source4/lib/appweb/esp/espProcs.c | 7 |
2 files changed, 11 insertions, 8 deletions
diff --git a/source4/lib/appweb/esp/esp.c b/source4/lib/appweb/esp/esp.c index ef20557f93..0be7af6c1b 100644 --- a/source4/lib/appweb/esp/esp.c +++ b/source4/lib/appweb/esp/esp.c @@ -1,7 +1,7 @@ /* * @file esp.c * @brief Embedded Server Pages (ESP) core processing. - * @overview The ESP handler provides an efficient way to generate + * @overview Embedded Server Pages provides an efficient way to generate * dynamic pages using server-side Javascript. This code provides * core processing, and should be called by an associated web * server URL handler. @@ -166,7 +166,7 @@ EspRequest *espCreateRequest(EspHandle webServerRequestHandle, char *uri, * Define variables as globals. headers[] are prefixed with "HTTP_". * NOTE: MaRequest::setVar does not copy into globals, whereas espSetVar * does if legacy_api is defined. So variables pre-defined by MaRequest - * must be copied here into globals[].
+ * must be copied here into globals[]. * * NOTE: if a variable is in session[] and in form[], the form[] will * override being later in the variables[] list. Use mprSetProperty @@ -301,7 +301,7 @@ int espGetVar(EspRequest *ep, EspEnvType oType, char *var, MprVar *value) */ int espProcessRequest(EspRequest *ep, const char *docPath, char *docBuf, - char **errMsg) + char **errMsg) { char *jsBuf; @@ -549,7 +549,7 @@ static int getEspToken(int state, EspParse *parse) if (parse->token == 0) { return ESP_TOK_ERR; } - parse->token[parse->tokLen] = '\0';
+ parse->token[parse->tokLen] = '\0'; parse->tokp = &parse->token[parse->tokLen - 1]; parse->tokLen += ESP_TOK_INCR; parse->endp = &parse->token[parse->tokLen - 1]; @@ -774,7 +774,7 @@ static int buildScript(EspRequest *ep, char **jsBuf, char *input, char **errMsg) mprStrcpy(incPath, sizeof(incPath), parse.token); } else { mprGetDirName(dir, sizeof(dir), ep->uri); - mprSprintf(incPath, sizeof(incPath), "%s/%s", + mprSprintf(incPath, sizeof(incPath), "%s/%s", dir, parse.token); } if (esp->mapToStorage(ep->requestHandle, path, sizeof(path), @@ -812,7 +812,7 @@ static int buildScript(EspRequest *ep, char **jsBuf, char *input, char **errMsg) } mprFree(parse.token); if (len < 0) { - mprAllocSprintf(errMsg, MPR_MAX_STRING, + mprAllocSprintf(errMsg, MPR_MAX_STRING, "Script token is too big in %s.\nConfigured maximum is %d.", path, maxScriptSize); return MPR_ERR_WONT_FIT; diff --git a/source4/lib/appweb/esp/espProcs.c b/source4/lib/appweb/esp/espProcs.c index 28b69a8a6f..7b5dfe680e 100644 --- a/source4/lib/appweb/esp/espProcs.c +++ b/source4/lib/appweb/esp/espProcs.c @@ -93,8 +93,11 @@ static int includeProc(EspRequest *ep, int argc, char **argv) buf[size] = '\0'; extension = strrchr(argv[i], '.'); - /* this makes handling include files in esp scripts much more convenient */ - if (extension && strcasecmp(extension, ".esp") == 0) { + + /* + * Allow nested inclusion of ESP requests + */ + if (extension && mprStrCmpAnyCase(extension, ".esp") == 0) { if (espProcessRequest(ep, path, buf, &emsg) != 0) { espError(ep, "Cant evaluate script - %s", emsg?emsg:""); mprFree(buf); |