From 63535dea0c5783780590a9e13fb87b2cf6999f39 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Wilfried=20G=C3=B6esgens?= Date: Sun, 24 Aug 2008 19:25:43 +0000 Subject: [PATCH] * fix Nullpointer Access in msgescputs * some smarter handling of conditional tokens --- webcit/subst.c | 7 +++++-- webcit/webcit.c | 6 +++++- webcit/who.c | 1 + 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/webcit/subst.c b/webcit/subst.c index c46b0855e..8acbcc2dc 100644 --- a/webcit/subst.c +++ b/webcit/subst.c @@ -389,6 +389,9 @@ void print_value_of(StrBuf *Target, const char *keyname, size_t keylen) { if (keyname[0] == '=') { DoTemplate(keyname+1, keylen - 1, NULL, NULL); } + +//////TODO: if param[1] == "U" -> urlescape +/// X -> escputs /** Page-local variables */ if ((WCC->vars!= NULL) && GetHash(WCC->vars, keyname, keylen, &vVar)) { ptr = (wcsubst*) vVar; @@ -982,7 +985,7 @@ int ConditionalVar(WCTemplateToken *Tokens, void *Context) switch(subst->wcs_type) { case WCS_STRING: if (Tokens->nParameters < 4) - return 0; + return 1; return (strcmp(Tokens->Params[3]->Start, subst->wcs_value) == 0); case WCS_SERVCMD: lprintf(1, " -> Server [%s]\n", subst->wcs_value);////todo @@ -992,7 +995,7 @@ int ConditionalVar(WCTemplateToken *Tokens, void *Context) case WCS_STRBUF: case WCS_STRBUF_REF: if (Tokens->nParameters < 4) - return 0; + return 1; return (strcmp(Tokens->Params[3]->Start, ChrPtr((StrBuf*) subst->wcs_function)) == 0); case WCS_LONG: if (Tokens->nParameters < 4) diff --git a/webcit/webcit.c b/webcit/webcit.c index e2d17f406..12b3b1e8f 100644 --- a/webcit/webcit.c +++ b/webcit/webcit.c @@ -613,6 +613,8 @@ void msgescputs1( char *strbuf) { StrBuf *OutBuf = NewStrBuf(); + if ((strbuf == NULL) || IsEmptyStr(strbuf)) + return; StrMsgEscAppend(OutBuf, NULL, strbuf); StrEscAppend(WC->WBuf, OutBuf, NULL, 0, 0); } @@ -621,7 +623,8 @@ void msgescputs1( char *strbuf) * print a string to the client after cleaning it with msgesc() */ void msgescputs(char *strbuf) { - StrMsgEscAppend(WC->WBuf, NULL, strbuf); + if ((strbuf != NULL) && !IsEmptyStr(strbuf)) + StrMsgEscAppend(WC->WBuf, NULL, strbuf); } @@ -1050,6 +1053,7 @@ void blank_page(void) { void url_do_template(void) { const StrBuf *Tmpl = sbstr("template"); begin_burst(); + output_headers(1, 0, 0, 0, 1, 0); DoTemplate(ChrPtr(Tmpl), StrLength(Tmpl), NULL, NULL); end_burst(); } diff --git a/webcit/who.c b/webcit/who.c index 112487aaf..0cffbebde 100644 --- a/webcit/who.c +++ b/webcit/who.c @@ -472,6 +472,7 @@ void WholistSubst(StrBuf *TemplBuffer, void *vContext) SVPutBuf("WHO:REALROOM", User->RealRoom, 1); SVPutBuf("WHO:REALHOST", User->RealHost, 1); svputlong("WHO:LASTACTIVE", User->LastActive); + ///svputlong("WHO:IDLESINCE",(now - User->LastActive) / 60);//// todo svputlong("WHO:SESSION", User->Session); svputlong("WHO:IDLE", User->Idle); svputlong("WHO:NSESSIONS", User->SessionCount); -- 2.39.2