summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Fonseca <fonseca@diku.dk>2006-03-06 05:23:30 (GMT)
committerJunio C Hamano <junkio@cox.net>2006-03-08 01:06:10 (GMT)
commitf067a13745fbeae1aa357876348a00e5edd0a629 (patch)
tree2fb613fd217a735dd5497ac7e34dbe532e24332c
parentaa1dbc9897822c8acb284b35c40da60f3debca91 (diff)
downloadgit-f067a13745fbeae1aa357876348a00e5edd0a629.zip
git-f067a13745fbeae1aa357876348a00e5edd0a629.tar.gz
git-f067a13745fbeae1aa357876348a00e5edd0a629.tar.bz2
repo-config: give value_ a sane default so regexec won't segfault
Signed-off-by: Jonas Fonseca <fonseca@diku.dk> Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r--repo-config.c5
-rwxr-xr-xt/t1300-repo-config.sh8
2 files changed, 12 insertions, 1 deletions
diff --git a/repo-config.c b/repo-config.c
index 9cf6519..c5ebb76 100644
--- a/repo-config.c
+++ b/repo-config.c
@@ -14,6 +14,9 @@ static enum { T_RAW, T_INT, T_BOOL } type = T_RAW;
static int show_config(const char* key_, const char* value_)
{
+ if (value_ == NULL)
+ value_ = "";
+
if (!strcmp(key_, key) &&
(regexp == NULL ||
(do_not_match ^
@@ -35,7 +38,7 @@ static int show_config(const char* key_, const char* value_)
sprintf(value, "%s", git_config_bool(key_, value_)
? "true" : "false");
} else {
- value = strdup(value_ ? value_ : "");
+ value = strdup(value_);
}
seen++;
}
diff --git a/t/t1300-repo-config.sh b/t/t1300-repo-config.sh
index 207dd3d..ab4dd5c 100755
--- a/t/t1300-repo-config.sh
+++ b/t/t1300-repo-config.sh
@@ -247,5 +247,13 @@ EOF
test_expect_success 'hierarchical section value' 'cmp .git/config expect'
+cat > .git/config << EOF
+[novalue]
+ variable
+EOF
+
+test_expect_success 'get variable with no value' \
+ 'git-repo-config --get novalue.variable ^$'
+
test_done