about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorLukas Fleischer2011-09-14 11:52:43 +0200
committerLars Hjemli2012-01-03 14:59:36 +0000
commitd96d2c98ebc4c2d3765f5b35c4142e0e828a421b (patch)
tree72e2ed0fd0dd949d400cf4b35f9496571488a2eb
parentshared.c: Remove unused "linux/limits.h" include (diff)
downloadcgit-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.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