aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Lukas Fleischer <cgit@cryptocrack.de>2011-09-14 18:52:43 (JST)
committerGravatar Lars Hjemli <hjemli@gmail.com>2012-01-03 23:59:36 (JST)
commitd96d2c98ebc4c2d3765f5b35c4142e0e828a421b (patch)
tree72e2ed0fd0dd949d400cf4b35f9496571488a2eb
parent8185169e5e2a8b9438c7a6f3f9c5eb6db5a37fea (diff)
downloadcgit-d96d2c98ebc4c2d3765f5b35c4142e0e828a421b.zip
cgit-d96d2c98ebc4c2d3765f5b35c4142e0e828a421b.tar.gz
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.txt2
-rw-r--r--shared.c2
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
501If a setting is not defined for a repository and the corresponding global 501If a setting is not defined for a repository and the corresponding global
502setting is also not defined (if applicable), then the corresponding 502setting is also not defined (if applicable), then the corresponding
503environment variable will be an empty string. 503environment variable will be unset.
504 504
505 505
506MACRO EXPANSION 506MACRO 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