Fossil SCM

Fix the "setenv:" attribute on a CGI script so that the value of the environment variable includes the rest of the line, omitting only leading and trialing whitespace. This allows an environment variable to be set to a string that contains spaces.

drh 2025-03-23 18:04 trunk
Commit 9443f619b3719aac6fe2584052bf61884d9d79e17cc69d80389592fb1bcfec1c
1 file changed +6 -2
+6 -2
--- src/main.c
+++ src/main.c
@@ -2542,12 +2542,16 @@
25422542
** setenv: NAME
25432543
**
25442544
** Sets environment variable NAME to VALUE. If VALUE is omitted, then
25452545
** the environment variable is unset.
25462546
*/
2547
- blob_token(&line,&value2);
2548
- fossil_setenv(blob_str(&value), blob_str(&value2));
2547
+ char *zValue;
2548
+ blob_tail(&line,&value2);
2549
+ blob_trim(&value2);
2550
+ zValue = blob_str(&value2);
2551
+ while( fossil_isspace(zValue[0]) ){ zValue++; }
2552
+ fossil_setenv(blob_str(&value), zValue);
25492553
blob_reset(&value);
25502554
blob_reset(&value2);
25512555
continue;
25522556
}
25532557
if( blob_eq(&key, "errorlog:") && blob_token(&line, &value) ){
25542558
--- src/main.c
+++ src/main.c
@@ -2542,12 +2542,16 @@
2542 ** setenv: NAME
2543 **
2544 ** Sets environment variable NAME to VALUE. If VALUE is omitted, then
2545 ** the environment variable is unset.
2546 */
2547 blob_token(&line,&value2);
2548 fossil_setenv(blob_str(&value), blob_str(&value2));
 
 
 
 
2549 blob_reset(&value);
2550 blob_reset(&value2);
2551 continue;
2552 }
2553 if( blob_eq(&key, "errorlog:") && blob_token(&line, &value) ){
2554
--- src/main.c
+++ src/main.c
@@ -2542,12 +2542,16 @@
2542 ** setenv: NAME
2543 **
2544 ** Sets environment variable NAME to VALUE. If VALUE is omitted, then
2545 ** the environment variable is unset.
2546 */
2547 char *zValue;
2548 blob_tail(&line,&value2);
2549 blob_trim(&value2);
2550 zValue = blob_str(&value2);
2551 while( fossil_isspace(zValue[0]) ){ zValue++; }
2552 fossil_setenv(blob_str(&value), zValue);
2553 blob_reset(&value);
2554 blob_reset(&value2);
2555 continue;
2556 }
2557 if( blob_eq(&key, "errorlog:") && blob_token(&line, &value) ){
2558

Keyboard Shortcuts

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