mirror of
https://github.com/git/git.git
synced 2026-06-19 15:39:47 +02:00
Merge branch 'jk/setup-gitfile-diag-fix' into jch
A regression in the error diagnosis code for invalid .git files has been fixed, avoiding a potential NULL-pointer crash when reporting that a .git file does not point to a valid repository. * jk/setup-gitfile-diag-fix: read_gitfile(): simplify NOT_A_REPO error message
This commit is contained in:
@@ -925,7 +925,7 @@ int verify_repository_format(const struct repository_format *format,
|
||||
return 0;
|
||||
}
|
||||
|
||||
void read_gitfile_error_die(int error_code, const char *path, const char *dir)
|
||||
void read_gitfile_error_die(int error_code, const char *path)
|
||||
{
|
||||
switch (error_code) {
|
||||
case READ_GITFILE_ERR_NOT_A_FILE:
|
||||
@@ -945,7 +945,8 @@ void read_gitfile_error_die(int error_code, const char *path, const char *dir)
|
||||
case READ_GITFILE_ERR_NO_PATH:
|
||||
die(_("no path in gitfile: %s"), path);
|
||||
case READ_GITFILE_ERR_NOT_A_REPO:
|
||||
die(_("not a git repository: %s"), dir);
|
||||
die(_("gitfile does not point to a valid repository: %s"),
|
||||
path);
|
||||
default:
|
||||
BUG("unknown error code");
|
||||
}
|
||||
@@ -1036,7 +1037,7 @@ cleanup_return:
|
||||
if (return_error_code)
|
||||
*return_error_code = error_code;
|
||||
else if (error_code)
|
||||
read_gitfile_error_die(error_code, path, dir);
|
||||
read_gitfile_error_die(error_code, path);
|
||||
|
||||
free(buf);
|
||||
return error_code ? NULL : path;
|
||||
@@ -1637,7 +1638,7 @@ static enum discovery_result setup_git_directory_gently_1(struct strbuf *dir,
|
||||
return GIT_DIR_INVALID_GITFILE;
|
||||
default:
|
||||
if (die_on_error)
|
||||
read_gitfile_error_die(error_code, dir->buf, NULL);
|
||||
read_gitfile_error_die(error_code, dir->buf);
|
||||
else
|
||||
return GIT_DIR_INVALID_GITFILE;
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ int is_nonbare_repository_dir(struct strbuf *path);
|
||||
#define READ_GITFILE_ERR_TOO_LARGE 8
|
||||
#define READ_GITFILE_ERR_MISSING 9
|
||||
#define READ_GITFILE_ERR_IS_A_DIR 10
|
||||
void read_gitfile_error_die(int error_code, const char *path, const char *dir);
|
||||
void read_gitfile_error_die(int error_code, const char *path);
|
||||
const char *read_gitfile_gently(const char *path, int *return_error_code);
|
||||
#define read_gitfile(path) read_gitfile_gently((path), NULL)
|
||||
const char *resolve_gitdir_gently(const char *suspect, int *return_error_code);
|
||||
|
||||
+1
-1
@@ -2579,7 +2579,7 @@ void absorb_git_dir_into_superproject(const char *path,
|
||||
|
||||
if (err_code != READ_GITFILE_ERR_NOT_A_REPO)
|
||||
/* We don't know what broke here. */
|
||||
read_gitfile_error_die(err_code, path, NULL);
|
||||
read_gitfile_error_die(err_code, path);
|
||||
|
||||
/*
|
||||
* Maybe populated, but no git directory was found?
|
||||
|
||||
+1
-1
@@ -27,7 +27,7 @@ test_expect_success 'bad setup: invalid .git file format' '
|
||||
test_expect_success 'bad setup: invalid .git file path' '
|
||||
echo "gitdir: $REAL.not" >.git &&
|
||||
test_must_fail git rev-parse 2>.err &&
|
||||
test_grep "not a git repository" .err
|
||||
test_grep "gitfile does not point to a valid repository" .err
|
||||
'
|
||||
|
||||
test_expect_success 'final setup + check rev-parse --git-dir' '
|
||||
|
||||
@@ -350,7 +350,7 @@ test_expect_success 'git dirs of sibling submodules must not be nested' '
|
||||
test_expect_success 'submodule git dir nesting detection must work with parallel cloning' '
|
||||
test_must_fail git clone --recurse-submodules --jobs=2 nested clone_parallel 2>err &&
|
||||
cat err &&
|
||||
grep -E "(already exists|is inside git dir|not a git repository)" err &&
|
||||
grep -E "(already exists|is inside git dir|does not point to a valid repository)" err &&
|
||||
{
|
||||
test_path_is_missing .git/modules/hippo/HEAD ||
|
||||
test_path_is_missing .git/modules/hippo/hooks/HEAD
|
||||
|
||||
Reference in New Issue
Block a user