]> code.citadel.org Git - citadel.git/blobdiff - webcit/paramhandling.c
Remove HKEY from call to strncmp so that it compiles.
[citadel.git] / webcit / paramhandling.c
index c2189a0baccd79674a112726020a7a6767664c01..86d9d1aa438489787d022471e29987cfa5f1a375 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * $Id$
- *
  * parse urlparts and post data
  */
 
@@ -55,20 +53,33 @@ void ParseURLParams(StrBuf *url)
                        free(u);
                        continue;
                }
-
-               Put(WCC->Hdr->urlstrings, u->url_key, keylen, u, free_url);
-               len = bptr - aptr;
-               u->url_data = NewStrBufPlain(aptr, len);
-               StrBufUnescape(u->url_data, 1);
-            
-               up = bptr;
-               ++up;
+               
+               if (strncmp(u->url_key, "__", 2) != 0)
+               {
+                       Put(WCC->Hdr->urlstrings, u->url_key, keylen, u, free_url);
+                       len = bptr - aptr;
+                       u->url_data = NewStrBufPlain(aptr, len);
+                       StrBufUnescape(u->url_data, 1);
 #ifdef DEBUG_URLSTRINGS
-               lprintf(9, "%s = [%ld]  %s\n", 
-                       u->url_key, 
-                       StrLength(u->url_data), 
-                       ChrPtr(u->url_data)); 
+                       lprintf(9, "%s = [%ld]  %s\n", 
+                               u->url_key, 
+                               StrLength(u->url_data), 
+                               ChrPtr(u->url_data)); 
 #endif
+               }
+               else {
+                       len = bptr - aptr;
+                       u->url_data = NewStrBufPlain(aptr, len);
+                       StrBufUnescape(u->url_data, 1);
+                       lprintf(1, "REJECTED because of __ is internal only: %s = [%ld]  %s\n", 
+                               u->url_key, 
+                               StrLength(u->url_data), 
+                               ChrPtr(u->url_data)); 
+                       
+                       free_url(u);
+               }
+               up = bptr;
+               ++up;
        }
 }
 
@@ -294,6 +305,8 @@ void upload_handler(char *name, char *filename, char *partnum, char *disp,
 {
        wcsession *WCC = WC;
        urlcontent *u;
+       long keylen;
+
 #ifdef DEBUG_URLSTRINGS
        lprintf(9, "upload_handler() name=%s, type=%s, len=%d\n", name, cbtype, length);
 #endif
@@ -304,10 +317,21 @@ void upload_handler(char *name, char *filename, char *partnum, char *disp,
        if ( (length > 0) && (IsEmptyStr(cbtype)) ) {
                u = (urlcontent *) malloc(sizeof(urlcontent));
                
-               safestrncpy(u->url_key, name, sizeof(u->url_key));
+               keylen = safestrncpy(u->url_key, name, sizeof(u->url_key));
                u->url_data = NewStrBufPlain(content, length);
                
-               Put(WCC->Hdr->urlstrings, u->url_key, strlen(u->url_key), u, free_url);
+               if (strncmp(u->url_key, "__", 2) != 0)
+               {
+                       Put(WCC->Hdr->urlstrings, u->url_key, keylen, u, free_url);
+               }
+               else {
+                       lprintf(1, "REJECTED because of __ is internal only: %s = [%ld]  %s\n", 
+                               u->url_key, 
+                               StrLength(u->url_data), 
+                               ChrPtr(u->url_data)); 
+                       
+                       free_url(u);
+               }
 #ifdef DEBUG_URLSTRINGS
                lprintf(9, "Key: <%s> len: [%ld] Data: <%s>\n", 
                        u->url_key, 
@@ -382,6 +406,7 @@ void tmplput_bstrforward(StrBuf *Target, WCTemplputParams *TP)
 {
        const StrBuf *Buf = SBstr(TKEY(0));
        if (Buf != NULL) {
+               StrBufAppendBufPlain(Target, HKEY("?"), 0);             
                StrBufAppendBufPlain(Target, TKEY(0), 0);
                StrBufAppendBufPlain(Target, HKEY("="), 0);             
                StrBufAppendTemplate(Target, TP, Buf, 1);