summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2014-03-18 14:00:15 -0700
committerJunio C Hamano <gitster@pobox.com>2014-03-18 14:00:15 -0700
commit6f0166771aadeb069b8952255414d67b643db1bf (patch)
tree2494ed3a3a79b40e2a31d5892b33504505425bd6
parent34120a5fb555a24904a85e64554bdcc7bcc17963 (diff)
parent67beb600563cf28186f44450e528df1ec4d524fd (diff)
downloadgit-6f0166771aadeb069b8952255414d67b643db1bf.tar.gz
Merge branch 'jk/config-path-include-fix' into maint
include.path variable (or any variable that expects a path that can use ~username expansion) in the configuration file is not a boolean, but the code failed to check it. * jk/config-path-include-fix: handle_path_include: don't look at NULL value expand_user_path: do not look at NULL path
-rw-r--r--config.c6
-rw-r--r--path.c2
2 files changed, 6 insertions, 2 deletions
diff --git a/config.c b/config.c
index d969a5aefc..314d8ee740 100644
--- a/config.c
+++ b/config.c
@@ -84,8 +84,12 @@ static int handle_path_include(const char *path, struct config_include_data *inc
{
int ret = 0;
struct strbuf buf = STRBUF_INIT;
- char *expanded = expand_user_path(path);
+ char *expanded;
+ if (!path)
+ return config_error_nonbool("include.path");
+
+ expanded = expand_user_path(path);
if (!expanded)
return error("Could not expand include path '%s'", path);
path = expanded;
diff --git a/path.c b/path.c
index 24594c4112..f9c5062427 100644
--- a/path.c
+++ b/path.c
@@ -265,12 +265,12 @@ static struct passwd *getpw_str(const char *username, size_t len)
char *expand_user_path(const char *path)
{
struct strbuf user_path = STRBUF_INIT;
- const char *first_slash = strchrnul(path, '/');
const char *to_copy = path;
if (path == NULL)
goto return_null;
if (path[0] == '~') {
+ const char *first_slash = strchrnul(path, '/');
const char *username = path + 1;
size_t username_len = first_slash - username;
if (username_len == 0) {