@@ -562,10 +562,23 @@
562 562 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
563 563 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void cgi_setenv(const char *zName, const char *zValue){
564 564 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_set_parameter_nocopy(zName, mprintf("%s",zValue), 0);
565 565 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
566 566 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
567 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
568 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
569 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Returns non-zero if the specified character is lower case -OR-
570 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** CGI has been configured to allow uppercase parameter names.
571 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
572 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int cgi_char_allowed(char c){
573 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( fossil_islower(c) ){
574 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 1; /* lowercase letter, always OK */
575 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( fossil_isupper(c) && g.cgiUpperParamsOk ){
576 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 1; /* uppercase letter, OK if allowed explicitly */
577 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
578 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return 0; /* something else, never OK */
579 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
567 580 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
568 581 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
569 582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Add a list of query parameters or cookies to the parameter set.
570 583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
571 584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Each parameter is of the form NAME=VALUE. Both the NAME and the
@@ -615,11 +628,11 @@
615 628 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
dehttpize(zValue);
616 629 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else{
617 630 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( *z ){ *z++ = 0; }
618 631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zValue = "";
619 632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
620 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( fossil_islower(zName[0]) && fossil_no_strange_characters(zName+1) ){
633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( cgi_char_allowed(zName[0]) && fossil_no_strange_characters(zName+1) ){
621 634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_set_parameter_nocopy(zName, zValue, isQP);
622 635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
623 636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#ifdef FOSSIL_ENABLE_JSON
624 637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
json_setenv( zName, cson_value_new_string(zValue,strlen(zValue)) );
625 638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* FOSSIL_ENABLE_JSON */
@@ -759,11 +772,11 @@
759 772 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zBoundry==0 ) return;
760 773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( (zLine = get_line_from_string(&z, &len))!=0 ){
761 774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( zLine[0]==0 ){
762 775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int nContent = 0;
763 776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zValue = get_bounded_content(&z, &len, zBoundry, &nContent);
764 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zName && zValue && fossil_islower(zName[0]) ){
777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zName && zValue && cgi_char_allowed(zName[0]) ){
765 778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_set_parameter_nocopy(zName, zValue, 1);
766 779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( showBytes ){
767 780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_set_parameter_nocopy(mprintf("%s:bytes", zName),
768 781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
mprintf("%d",nContent), 1);
769 782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
@@ -779,17 +792,17 @@
779 792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i++;
780 793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( c=='n' && sqlite3_strnicmp(azArg[i],"name=",n)==0 ){
781 794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zName = azArg[++i];
782 795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( c=='f' && sqlite3_strnicmp(azArg[i],"filename=",n)==0 ){
783 796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *z = azArg[++i];
784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zName && z && fossil_islower(zName[0]) ){
797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zName && z && cgi_char_allowed(zName[0]) ){
785 798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_set_parameter_nocopy(mprintf("%s:filename",zName), z, 1);
786 799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
787 800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
showBytes = 1;
788 801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( c=='c' && sqlite3_strnicmp(azArg[i],"content-type:",n)==0 ){
789 802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *z = azArg[++i];
790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( zName && z && fossil_islower(zName[0]) ){
803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( zName && z && cgi_char_allowed(zName[0]) ){
791 804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_set_parameter_nocopy(mprintf("%s:mimetype",zName), z, 1);
792 805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
793 806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
794 807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
795 808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
796 809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!