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.
Commit
9443f619b3719aac6fe2584052bf61884d9d79e17cc69d80389592fb1bcfec1c
Parent
14e1581c2c02cc7…
1 file changed
+6
-2
+6
-2
| --- src/main.c | ||
| +++ src/main.c | ||
| @@ -2542,12 +2542,16 @@ | ||
| 2542 | 2542 | ** setenv: NAME |
| 2543 | 2543 | ** |
| 2544 | 2544 | ** Sets environment variable NAME to VALUE. If VALUE is omitted, then |
| 2545 | 2545 | ** the environment variable is unset. |
| 2546 | 2546 | */ |
| 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); | |
| 2549 | 2553 | blob_reset(&value); |
| 2550 | 2554 | blob_reset(&value2); |
| 2551 | 2555 | continue; |
| 2552 | 2556 | } |
| 2553 | 2557 | if( blob_eq(&key, "errorlog:") && blob_token(&line, &value) ){ |
| 2554 | 2558 |
| --- 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 |