]> code.citadel.org Git - citadel.git/blobdiff - webcit/subst.c
* preeval_iterate(): also check the required parameters.
[citadel.git] / webcit / subst.c
index 00f99d8b006583cd69fbdbe9adc00009f63daa83..9ff94c57a4941e8a6d4bd59484016f11deb2f6e9 100644 (file)
@@ -2146,6 +2146,7 @@ int preeval_iterate(WCTemplateToken *Token)
        WCTemplputParams *TP;
        void *vTmpl;
        void *vIt;
+       HashIterator *It;
 
        memset(&TPP, 0, sizeof(WCTemplputParams));
        TP = &TPP;
@@ -2169,6 +2170,16 @@ int preeval_iterate(WCTemplateToken *Token)
                                 "referenced here doesn't exist");
        }
        Token->Preeval2 = vIt;
+       It = (HashIterator *) vIt;
+
+       if (TP->Tokens->nParameters <= It->AdditionalParams + 2) {
+               LogTemplateError(                               
+                       NULL, "Iterator", ERR_PARM1, TP,
+                       "doesn't work with %d params", 
+                       TP->Tokens->nParameters - 1);
+       }
+
+
        return 1;
 }
 
@@ -2201,11 +2212,11 @@ void tmpl_iterate_subtmpl(StrBuf *Target, WCTemplputParams *TP)
                return;
        }
 
-       if (TP->Tokens->nParameters < It->AdditionalParams + 2) {
+       if (TP->Tokens->nParameters <= It->AdditionalParams + 2) {
                LogTemplateError(                               
                        Target, "Iterator", ERR_PARM1, TP,
                        "doesn't work with %d params", 
-                       TP->Tokens->nParameters);
+                       TP->Tokens->nParameters - 1);
                return;
        }