From f8219ec5a8502975f347323900ff3245ff5222dc Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Thu, 19 Jul 2007 04:00:32 +0000 Subject: r23961: Allow SWAT to operate on x86_64 machines. On machines with a 4 byte int, and a 8 byte pointer, the ESP could would fail. The problem is that 0 != NULL. 0 is an int (4 bytes) and NULL is a pointer (8), and this matters critically to varargs functions. If a 0 was passed as the 'terminating' argument, then only 4 bytes would be written to the stack, but va_arg(ap, char *) would try and pull 8, reading uninitalised memory. Andrew Bartlett (This used to be commit 72ca8e3b2a45179b731790e6329b978b22ac1ec0) --- source4/lib/appweb/esp/esp.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'source4/lib/appweb/esp') diff --git a/source4/lib/appweb/esp/esp.c b/source4/lib/appweb/esp/esp.c index 0be7af6c1b..3e47503edf 100644 --- a/source4/lib/appweb/esp/esp.c +++ b/source4/lib/appweb/esp/esp.c @@ -352,7 +352,7 @@ void espError(EspRequest *ep, const char *fmt, ...) va_start(args, fmt); mprAllocVsprintf(&buf, MPR_MAX_HEAP_SIZE, fmt, args); - ejsSetErrorMsg(ep->eid, buf); + ejsSetErrorMsg(ep->eid, "%s", buf); mprFree(buf); va_end(args); } @@ -735,7 +735,7 @@ static int buildScript(EspRequest *ep, char **jsBuf, char *input, char **errMsg) case ESP_TOK_LITERAL: len = mprReallocStrcat(jsBuf, maxScriptSize, len, 0, - "write(\"", parse.token, "\");\n", 0); + "write(\"", parse.token, "\");\n", NULL); break; case ESP_TOK_ATAT: @@ -744,12 +744,12 @@ static int buildScript(EspRequest *ep, char **jsBuf, char *input, char **errMsg) * Catenate with "" to cause toString to run. */ len = mprReallocStrcat(jsBuf, maxScriptSize, len, 0, - "write(\"\" + ", parse.token, ");\n", 0); + "write(\"\" + ", parse.token, ");\n", NULL); break; case ESP_TOK_EQUALS: len = mprReallocStrcat(jsBuf, maxScriptSize, len, 0, - "write(\"\" + ", parse.token, ");\n", 0); + "write(\"\" + ", parse.token, ");\n", NULL); state = ESP_STATE_IN_ESP_TAG; break; @@ -759,7 +759,7 @@ static int buildScript(EspRequest *ep, char **jsBuf, char *input, char **errMsg) while (tid != ESP_TOK_EOF && tid != ESP_TOK_EOF && tid != ESP_TOK_END_ESP && len >= 0) { len = mprReallocStrcat(jsBuf, maxScriptSize, len, 0, - parse.token, 0); + parse.token, NULL); tid = getEspToken(state, &parse); } state = ESP_STATE_BEGIN; @@ -802,7 +802,7 @@ static int buildScript(EspRequest *ep, char **jsBuf, char *input, char **errMsg) return rc; } - len = mprReallocStrcat(jsBuf, maxScriptSize, len, 0, incBuf, 0); + len = mprReallocStrcat(jsBuf, maxScriptSize, len, 0, incBuf, NULL); mprFree(incText); mprFree(incBuf); state = ESP_STATE_IN_ESP_TAG; -- cgit