Fossil SCM
Still more fixes to the "redirect: * URL" mechanism of CGI.
Commit
d6f9c566afd6cdf4598a99de668b7f63b2ef10390b35684d41cb57fc56056cc5
Parent
dd6b2987cd6fd4f…
1 file changed
+10
-9
+10
-9
| --- src/main.c | ||
| +++ src/main.c | ||
| @@ -2051,23 +2051,24 @@ | ||
| 2051 | 2051 | set_base_url(0); |
| 2052 | 2052 | if( zName==0 ){ |
| 2053 | 2053 | zName = P("PATH_INFO"); |
| 2054 | 2054 | if( zName && zName[0]=='/' ) zName++; |
| 2055 | 2055 | } |
| 2056 | - if( zName && validate16(zName, strlen(zName)) ){ | |
| 2056 | + if( zName ){ | |
| 2057 | 2057 | for(i=0; i<nRedirect; i++){ |
| 2058 | 2058 | if( fossil_strcmp(azRedirect[i*2],"*")==0 ){ |
| 2059 | 2059 | zNotFound = azRedirect[i*2+1]; |
| 2060 | 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); | |
| 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 | + } | |
| 2069 | 2070 | } |
| 2070 | 2071 | } |
| 2071 | 2072 | if( zNotFound ){ |
| 2072 | 2073 | cgi_redirectf(zNotFound /*works-like:"%s"*/, zName); |
| 2073 | 2074 | }else{ |
| 2074 | 2075 |
| --- 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 |