Merge branch 'sg/ref-filter-wo-repository'
"git ls-remote --sort=<thing>" can feed an object that is not yet available into the comparison machinery and segfault, which has been corrected to check such a request upfront and reject it. * sg/ref-filter-wo-repository: ref-filter: don't look for objects when outside of a repository
This commit is contained in:
commit
7bdebaa646
@ -534,6 +534,10 @@ static int parse_ref_filter_atom(const struct ref_format *format,
|
||||
if (ARRAY_SIZE(valid_atom) <= i)
|
||||
return strbuf_addf_ret(err, -1, _("unknown field name: %.*s"),
|
||||
(int)(ep-atom), atom);
|
||||
if (valid_atom[i].source != SOURCE_NONE && !have_git_dir())
|
||||
return strbuf_addf_ret(err, -1,
|
||||
_("not a git repository, but the field '%.*s' requires access to object data"),
|
||||
(int)(ep-atom), atom);
|
||||
|
||||
/* Add it in, including the deref prefix */
|
||||
at = used_atom_cnt;
|
||||
|
@ -302,6 +302,12 @@ test_expect_success 'ls-remote works outside repository' '
|
||||
nongit git ls-remote dst.git
|
||||
'
|
||||
|
||||
test_expect_success 'ls-remote --sort fails gracefully outside repository' '
|
||||
# Use a sort key that requires access to the referenced objects.
|
||||
nongit test_must_fail git ls-remote --sort=authordate "$TRASH_DIRECTORY" 2>err &&
|
||||
test_i18ngrep "^fatal: not a git repository, but the field '\''authordate'\'' requires access to object data" err
|
||||
'
|
||||
|
||||
test_expect_success 'ls-remote patterns work with all protocol versions' '
|
||||
git for-each-ref --format="%(objectname) %(refname)" \
|
||||
refs/heads/master refs/remotes/origin/master >expect &&
|
||||
|
Loading…
Reference in New Issue
Block a user