From: Junio C Hamano Date: Tue, 18 Mar 2014 21:00:15 +0000 (-0700) Subject: Merge branch 'jk/config-path-include-fix' into maint X-Git-Tag: v1.9.1~10 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/6f0166771aadeb069b8952255414d67b643db1bf?hp=34120a5fb555a24904a85e64554bdcc7bcc17963 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 --- 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) {