Fossil SCM
fix login_needed() formatting of redirection string
Commit
204e5992e4eb05922d51a4341b8e52b737a188cb06c3124b1d2fe2dd782c2fa7
Parent
fc300d5a9aaeb54…
1 file changed
+8
-3
+8
-3
| --- src/login.c | ||
| +++ src/login.c | ||
| @@ -1424,21 +1424,26 @@ | ||
| 1424 | 1424 | }else |
| 1425 | 1425 | #endif /* FOSSIL_ENABLE_JSON */ |
| 1426 | 1426 | { |
| 1427 | 1427 | const char *zUrl = PD("REQUEST_URI", "index"); |
| 1428 | 1428 | const char *zQS = P("QUERY_STRING"); |
| 1429 | + /* | |
| 1430 | + ** if there is already a query string, use '&' to introduce a new | |
| 1431 | + ** parameter; otherwise use '?' to introduce a new parameter | |
| 1432 | + */ | |
| 1433 | + char intro = (zQS && zQS[0]) ? '&' : '?'; | |
| 1429 | 1434 | Blob redir; |
| 1430 | 1435 | blob_init(&redir, 0, 0); |
| 1431 | 1436 | if( fossil_wants_https(1) ){ |
| 1432 | 1437 | blob_appendf(&redir, "%s/login?g=%T", g.zHttpsURL, zUrl); |
| 1433 | 1438 | }else{ |
| 1434 | 1439 | blob_appendf(&redir, "%R/login?g=%T", zUrl); |
| 1435 | 1440 | } |
| 1436 | - if( zQS && zQS[0] ){ | |
| 1437 | - blob_appendf(&redir, "%%3f%T", zQS); | |
| 1441 | + if( anonOk ){ | |
| 1442 | + blob_appendf(&redir, "%%%02Xanon", intro); | |
| 1443 | + intro = '&'; /* change intro for subsequent parameters */ | |
| 1438 | 1444 | } |
| 1439 | - if( anonOk ) blob_append(&redir, "&anon", 5); | |
| 1440 | 1445 | cgi_redirect(blob_str(&redir)); |
| 1441 | 1446 | /* NOTREACHED */ |
| 1442 | 1447 | assert(0); |
| 1443 | 1448 | } |
| 1444 | 1449 | } |
| 1445 | 1450 |
| --- src/login.c | |
| +++ src/login.c | |
| @@ -1424,21 +1424,26 @@ | |
| 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 | cgi_redirect(blob_str(&redir)); |
| 1441 | /* NOTREACHED */ |
| 1442 | assert(0); |
| 1443 | } |
| 1444 | } |
| 1445 |
| --- src/login.c | |
| +++ src/login.c | |
| @@ -1424,21 +1424,26 @@ | |
| 1424 | }else |
| 1425 | #endif /* FOSSIL_ENABLE_JSON */ |
| 1426 | { |
| 1427 | const char *zUrl = PD("REQUEST_URI", "index"); |
| 1428 | const char *zQS = P("QUERY_STRING"); |
| 1429 | /* |
| 1430 | ** if there is already a query string, use '&' to introduce a new |
| 1431 | ** parameter; otherwise use '?' to introduce a new parameter |
| 1432 | */ |
| 1433 | char intro = (zQS && zQS[0]) ? '&' : '?'; |
| 1434 | Blob redir; |
| 1435 | blob_init(&redir, 0, 0); |
| 1436 | if( fossil_wants_https(1) ){ |
| 1437 | blob_appendf(&redir, "%s/login?g=%T", g.zHttpsURL, zUrl); |
| 1438 | }else{ |
| 1439 | blob_appendf(&redir, "%R/login?g=%T", zUrl); |
| 1440 | } |
| 1441 | if( anonOk ){ |
| 1442 | blob_appendf(&redir, "%%%02Xanon", intro); |
| 1443 | intro = '&'; /* change intro for subsequent parameters */ |
| 1444 | } |
| 1445 | cgi_redirect(blob_str(&redir)); |
| 1446 | /* NOTREACHED */ |
| 1447 | assert(0); |
| 1448 | } |
| 1449 | } |
| 1450 |