Fossil SCM

If REQUEST_URI includes a query string (which it does for "fossil ui" and for Apache, but not for althttpd) then omit that string prior to using the REQUEST_URI when forming the "g=" query parameter for the login redirect in login_needed().

drh 2020-12-14 14:27 trunk
Commit d327660804fe3bd4633dd64a7e7d4813d4d598a81308a3e646fb4cdbcbf44915
1 file changed +6 -2
+6 -2
--- src/login.c
+++ src/login.c
@@ -1424,16 +1424,20 @@
14241424
}else
14251425
#endif /* FOSSIL_ENABLE_JSON */
14261426
{
14271427
const char *zUrl = PD("REQUEST_URI", "index");
14281428
const char *zQS = P("QUERY_STRING");
1429
+ char *zUrlNoQS;
1430
+ int i;
14291431
Blob redir;
14301432
blob_init(&redir, 0, 0);
1433
+ for(i=0; zUrl[i] && zUrl[i]!='?'; i++){}
1434
+ zUrlNoQS = fossil_strndup(zUrl, i);
14311435
if( fossil_wants_https(1) ){
1432
- blob_appendf(&redir, "%s/login?g=%T", g.zHttpsURL, zUrl);
1436
+ blob_appendf(&redir, "%s/login?g=%T", g.zHttpsURL, zUrlNoQS);
14331437
}else{
1434
- blob_appendf(&redir, "%R/login?g=%T", zUrl);
1438
+ blob_appendf(&redir, "%R/login?g=%T", zUrlNoQS);
14351439
}
14361440
if( zQS && zQS[0] ){
14371441
blob_appendf(&redir, "%%3f%T", zQS);
14381442
}
14391443
if( anonOk ) blob_append(&redir, "&anon", 5);
14401444
--- src/login.c
+++ src/login.c
@@ -1424,16 +1424,20 @@
1424 }else
1425 #endif /* FOSSIL_ENABLE_JSON */
1426 {
1427 const char *zUrl = PD("REQUEST_URI", "index");
1428 const char *zQS = P("QUERY_STRING");
 
 
1429 Blob redir;
1430 blob_init(&redir, 0, 0);
 
 
1431 if( fossil_wants_https(1) ){
1432 blob_appendf(&redir, "%s/login?g=%T", g.zHttpsURL, zUrl);
1433 }else{
1434 blob_appendf(&redir, "%R/login?g=%T", zUrl);
1435 }
1436 if( zQS && zQS[0] ){
1437 blob_appendf(&redir, "%%3f%T", zQS);
1438 }
1439 if( anonOk ) blob_append(&redir, "&anon", 5);
1440
--- src/login.c
+++ src/login.c
@@ -1424,16 +1424,20 @@
1424 }else
1425 #endif /* FOSSIL_ENABLE_JSON */
1426 {
1427 const char *zUrl = PD("REQUEST_URI", "index");
1428 const char *zQS = P("QUERY_STRING");
1429 char *zUrlNoQS;
1430 int i;
1431 Blob redir;
1432 blob_init(&redir, 0, 0);
1433 for(i=0; zUrl[i] && zUrl[i]!='?'; i++){}
1434 zUrlNoQS = fossil_strndup(zUrl, i);
1435 if( fossil_wants_https(1) ){
1436 blob_appendf(&redir, "%s/login?g=%T", g.zHttpsURL, zUrlNoQS);
1437 }else{
1438 blob_appendf(&redir, "%R/login?g=%T", zUrlNoQS);
1439 }
1440 if( zQS && zQS[0] ){
1441 blob_appendf(&redir, "%%3f%T", zQS);
1442 }
1443 if( anonOk ) blob_append(&redir, "&anon", 5);
1444

Keyboard Shortcuts

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