Fossil SCM

Still more fixes to the "redirect: * URL" mechanism of CGI.

drh 2021-02-08 21:18 trunk
Commit d6f9c566afd6cdf4598a99de668b7f63b2ef10390b35684d41cb57fc56056cc5
1 file changed +10 -9
+10 -9
--- src/main.c
+++ src/main.c
@@ -2051,23 +2051,24 @@
20512051
set_base_url(0);
20522052
if( zName==0 ){
20532053
zName = P("PATH_INFO");
20542054
if( zName && zName[0]=='/' ) zName++;
20552055
}
2056
- if( zName && validate16(zName, strlen(zName)) ){
2056
+ if( zName ){
20572057
for(i=0; i<nRedirect; i++){
20582058
if( fossil_strcmp(azRedirect[i*2],"*")==0 ){
20592059
zNotFound = azRedirect[i*2+1];
20602060
continue;
2061
- }
2062
- db_open_repository(azRedirect[i*2]);
2063
- if( db_exists("SELECT 1 FROM blob WHERE uuid GLOB '%q*'", zName) ||
2064
- db_exists("SELECT 1 FROM ticket WHERE tkt_uuid GLOB '%q*'", zName) ){
2065
- cgi_redirectf(azRedirect[i*2+1] /*works-like:"%s"*/, zName);
2066
- return;
2067
- }
2068
- db_close(1);
2061
+ }else if( validate16(zName, strlen(zName)) ){
2062
+ db_open_repository(azRedirect[i*2]);
2063
+ if( db_exists("SELECT 1 FROM blob WHERE uuid GLOB '%q*'", zName) ||
2064
+ db_exists("SELECT 1 FROM ticket WHERE tkt_uuid GLOB '%q*'",zName) ){
2065
+ cgi_redirectf(azRedirect[i*2+1] /*works-like:"%s"*/, zName);
2066
+ return;
2067
+ }
2068
+ db_close(1);
2069
+ }
20692070
}
20702071
}
20712072
if( zNotFound ){
20722073
cgi_redirectf(zNotFound /*works-like:"%s"*/, zName);
20732074
}else{
20742075
--- src/main.c
+++ src/main.c
@@ -2051,23 +2051,24 @@
2051 set_base_url(0);
2052 if( zName==0 ){
2053 zName = P("PATH_INFO");
2054 if( zName && zName[0]=='/' ) zName++;
2055 }
2056 if( zName && validate16(zName, strlen(zName)) ){
2057 for(i=0; i<nRedirect; i++){
2058 if( fossil_strcmp(azRedirect[i*2],"*")==0 ){
2059 zNotFound = azRedirect[i*2+1];
2060 continue;
2061 }
2062 db_open_repository(azRedirect[i*2]);
2063 if( db_exists("SELECT 1 FROM blob WHERE uuid GLOB '%q*'", zName) ||
2064 db_exists("SELECT 1 FROM ticket WHERE tkt_uuid GLOB '%q*'", zName) ){
2065 cgi_redirectf(azRedirect[i*2+1] /*works-like:"%s"*/, zName);
2066 return;
2067 }
2068 db_close(1);
 
2069 }
2070 }
2071 if( zNotFound ){
2072 cgi_redirectf(zNotFound /*works-like:"%s"*/, zName);
2073 }else{
2074
--- src/main.c
+++ src/main.c
@@ -2051,23 +2051,24 @@
2051 set_base_url(0);
2052 if( zName==0 ){
2053 zName = P("PATH_INFO");
2054 if( zName && zName[0]=='/' ) zName++;
2055 }
2056 if( zName ){
2057 for(i=0; i<nRedirect; i++){
2058 if( fossil_strcmp(azRedirect[i*2],"*")==0 ){
2059 zNotFound = azRedirect[i*2+1];
2060 continue;
2061 }else if( validate16(zName, strlen(zName)) ){
2062 db_open_repository(azRedirect[i*2]);
2063 if( db_exists("SELECT 1 FROM blob WHERE uuid GLOB '%q*'", zName) ||
2064 db_exists("SELECT 1 FROM ticket WHERE tkt_uuid GLOB '%q*'",zName) ){
2065 cgi_redirectf(azRedirect[i*2+1] /*works-like:"%s"*/, zName);
2066 return;
2067 }
2068 db_close(1);
2069 }
2070 }
2071 }
2072 if( zNotFound ){
2073 cgi_redirectf(zNotFound /*works-like:"%s"*/, zName);
2074 }else{
2075

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button