diff options
author | Lukas Fleischer | 2011-09-14 11:52:43 +0200 |
---|---|---|
committer | Lars Hjemli | 2012-01-03 14:59:36 +0000 |
commit | d96d2c98ebc4c2d3765f5b35c4142e0e828a421b (patch) | |
tree | 72e2ed0fd0dd949d400cf4b35f9496571488a2eb | |
parent | shared.c: Remove unused "linux/limits.h" include (diff) | |
download | cgit-d96d2c98ebc4c2d3765f5b35c4142e0e828a421b.tar.gz cgit-d96d2c98ebc4c2d3765f5b35c4142e0e828a421b.zip |
shared.c: Only setenv() if value is non-null
Some setenv() implementations (e.g. the one in OpenBSD's stdlib) segfault if we pass a NULL value. Only set environment variables if the corresponding settings are defined to avoid this. Note that this is a minor behaviour change as environment variables were supposed to be set to an empty string if a setting was undefined. Given that this feature isn't part of any official release yet, there's no need to worry about backwards compatibility, really. Change the documentation accordingly. Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
-rw-r--r-- | cgitrc.5.txt | 2 | ||||
-rw-r--r-- | shared.c | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/cgitrc.5.txt b/cgitrc.5.txt index 4721c1e..a22423b 100644 --- a/cgitrc.5.txt +++ b/cgitrc.5.txt | |||
@@ -500,7 +500,7 @@ Also, all filters are handed the following environment variables: | |||
500 | 500 | ||
501 | If a setting is not defined for a repository and the corresponding global | 501 | If a setting is not defined for a repository and the corresponding global |
502 | setting is also not defined (if applicable), then the corresponding | 502 | setting is also not defined (if applicable), then the corresponding |
503 | environment variable will be an empty string. | 503 | environment variable will be unset. |
504 | 504 | ||
505 | 505 | ||
506 | MACRO EXPANSION | 506 | MACRO EXPANSION |
diff --git a/shared.c b/shared.c index 75c4b5c..0c8ce3e 100644 --- a/shared.c +++ b/shared.c | |||
@@ -392,7 +392,7 @@ void cgit_prepare_repo_env(struct cgit_repo * repo) | |||
392 | p = env_vars; | 392 | p = env_vars; |
393 | q = p + env_var_count; | 393 | q = p + env_var_count; |
394 | for (; p < q; p++) | 394 | for (; p < q; p++) |
395 | if (setenv(p->name, p->value, 1)) | 395 | if (p->value && setenv(p->name, p->value, 1)) |
396 | fprintf(stderr, warn, p->name, p->value); | 396 | fprintf(stderr, warn, p->name, p->value); |
397 | } | 397 | } |
398 | 398 | ||