* block parameters starting with __ from making it into the list, they're internal...
authorWilfried Göesgens <willi@citadel.org>
Sun, 29 Aug 2010 16:55:41 +0000 (16:55 +0000)
committerWilfried Göesgens <willi@citadel.org>
Sun, 29 Aug 2010 16:55:41 +0000 (16:55 +0000)
webcit/paramhandling.c

index d1edfeb066270be3420b1f523e5479da8ebc17e4..d5fff13e467326c79190c7024a43d280d0f1dd80 100644 (file)
@@ -55,20 +55,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, HKEY("__")) != 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 +307,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 +319,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, HKEY("__")) != 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,