]> git.cameronkatri.com Git - cgit.git/commitdiff
shared.c: Only setenv() if value is non-null
authorLukas Fleischer <cgit@cryptocrack.de>
Wed, 14 Sep 2011 09:52:43 +0000 (11:52 +0200)
committerLars Hjemli <hjemli@gmail.com>
Tue, 3 Jan 2012 14:59:36 +0000 (14:59 +0000)
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>
cgitrc.5.txt
shared.c

index 4721c1e01335e10bd0fff7060b8281796a7ea557..a22423bcaeb9ebce08f73e1c219707511635dea7 100644 (file)
@@ -500,7 +500,7 @@ Also, all filters are handed the following environment variables:
 
 If a setting is not defined for a repository and the corresponding global
 setting is also not defined (if applicable), then the corresponding
-environment variable will be an empty string.
+environment variable will be unset.
 
 
 MACRO EXPANSION
index 75c4b5c7e0c78b11bb7ff344e5ef0fd82fc9535d..0c8ce3e2ce79140192585b81d66a589dbaacbdbb 100644 (file)
--- a/shared.c
+++ b/shared.c
@@ -392,7 +392,7 @@ void cgit_prepare_repo_env(struct cgit_repo * repo)
        p = env_vars;
        q = p + env_var_count;
        for (; p < q; p++)
-               if (setenv(p->name, p->value, 1))
+               if (p->value && setenv(p->name, p->value, 1))
                        fprintf(stderr, warn, p->name, p->value);
 }