Fossil SCM

Improvements to the g= query parameter on login redirects. This is an attempt to fix the problem described by [forum:/forumpost/f81625500d|forum post forum f81625500d].

drh 2021-08-25 13:10 trunk
Commit 3571c8715d512a281892724bcf32c081c963f6e0ffd501563db15a5ab62fce60
1 file changed +4 -8
+4 -8
--- src/login.c
+++ src/login.c
@@ -105,11 +105,11 @@
105105
** Or if there is no "g" query parameter, redirect to the homepage.
106106
*/
107107
static void redirect_to_g(void){
108108
const char *zGoto = P("g");
109109
if( zGoto ){
110
- cgi_redirect(zGoto);
110
+ cgi_redirectf("%R/%s",zGoto);
111111
}else{
112112
fossil_redirect_home();
113113
}
114114
}
115115
@@ -1479,22 +1479,18 @@
14791479
/* NOTREACHED */
14801480
assert(0);
14811481
}else
14821482
#endif /* FOSSIL_ENABLE_JSON */
14831483
{
1484
- const char *zUrl = PD("REQUEST_URI", "index");
14851484
const char *zQS = P("QUERY_STRING");
1486
- char *zUrlNoQS;
1487
- int i;
1485
+ const char *zPathInfo = PD("PATH_INFO","");
14881486
Blob redir;
14891487
blob_init(&redir, 0, 0);
1490
- for(i=0; zUrl[i] && zUrl[i]!='?'; i++){}
1491
- zUrlNoQS = fossil_strndup(zUrl, i);
14921488
if( fossil_wants_https(1) ){
1493
- blob_appendf(&redir, "%s/login?g=%T", g.zHttpsURL, zUrlNoQS);
1489
+ blob_appendf(&redir, "%s/login?g=%T", g.zHttpsURL, zPathInfo);
14941490
}else{
1495
- blob_appendf(&redir, "%R/login?g=%T", zUrlNoQS);
1491
+ blob_appendf(&redir, "%R/login?g=%T", zPathInfo);
14961492
}
14971493
if( zQS && zQS[0] ){
14981494
blob_appendf(&redir, "%%3f%T", zQS);
14991495
}
15001496
if( anonOk ) blob_append(&redir, "&anon", 5);
15011497
--- src/login.c
+++ src/login.c
@@ -105,11 +105,11 @@
105 ** Or if there is no "g" query parameter, redirect to the homepage.
106 */
107 static void redirect_to_g(void){
108 const char *zGoto = P("g");
109 if( zGoto ){
110 cgi_redirect(zGoto);
111 }else{
112 fossil_redirect_home();
113 }
114 }
115
@@ -1479,22 +1479,18 @@
1479 /* NOTREACHED */
1480 assert(0);
1481 }else
1482 #endif /* FOSSIL_ENABLE_JSON */
1483 {
1484 const char *zUrl = PD("REQUEST_URI", "index");
1485 const char *zQS = P("QUERY_STRING");
1486 char *zUrlNoQS;
1487 int i;
1488 Blob redir;
1489 blob_init(&redir, 0, 0);
1490 for(i=0; zUrl[i] && zUrl[i]!='?'; i++){}
1491 zUrlNoQS = fossil_strndup(zUrl, i);
1492 if( fossil_wants_https(1) ){
1493 blob_appendf(&redir, "%s/login?g=%T", g.zHttpsURL, zUrlNoQS);
1494 }else{
1495 blob_appendf(&redir, "%R/login?g=%T", zUrlNoQS);
1496 }
1497 if( zQS && zQS[0] ){
1498 blob_appendf(&redir, "%%3f%T", zQS);
1499 }
1500 if( anonOk ) blob_append(&redir, "&anon", 5);
1501
--- src/login.c
+++ src/login.c
@@ -105,11 +105,11 @@
105 ** Or if there is no "g" query parameter, redirect to the homepage.
106 */
107 static void redirect_to_g(void){
108 const char *zGoto = P("g");
109 if( zGoto ){
110 cgi_redirectf("%R/%s",zGoto);
111 }else{
112 fossil_redirect_home();
113 }
114 }
115
@@ -1479,22 +1479,18 @@
1479 /* NOTREACHED */
1480 assert(0);
1481 }else
1482 #endif /* FOSSIL_ENABLE_JSON */
1483 {
 
1484 const char *zQS = P("QUERY_STRING");
1485 const char *zPathInfo = PD("PATH_INFO","");
 
1486 Blob redir;
1487 blob_init(&redir, 0, 0);
 
 
1488 if( fossil_wants_https(1) ){
1489 blob_appendf(&redir, "%s/login?g=%T", g.zHttpsURL, zPathInfo);
1490 }else{
1491 blob_appendf(&redir, "%R/login?g=%T", zPathInfo);
1492 }
1493 if( zQS && zQS[0] ){
1494 blob_appendf(&redir, "%%3f%T", zQS);
1495 }
1496 if( anonOk ) blob_append(&redir, "&anon", 5);
1497

Keyboard Shortcuts

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