Merge branch 'js/fsck-tag-validation'
New tag object format validation added in 2.2 showed garbage after a tagname it reported in its error message. * js/fsck-tag-validation: index-pack: terminate object buffers with NUL fsck: properly bound "invalid tag name" error message
This commit is contained in:
commit
1cb4b3d380
@ -447,7 +447,7 @@ static void *unpack_entry_data(unsigned long offset, unsigned long size,
|
|||||||
if (type == OBJ_BLOB && size > big_file_threshold)
|
if (type == OBJ_BLOB && size > big_file_threshold)
|
||||||
buf = fixed_buf;
|
buf = fixed_buf;
|
||||||
else
|
else
|
||||||
buf = xmalloc(size);
|
buf = xmallocz(size);
|
||||||
|
|
||||||
memset(&stream, 0, sizeof(stream));
|
memset(&stream, 0, sizeof(stream));
|
||||||
git_inflate_init(&stream);
|
git_inflate_init(&stream);
|
||||||
@ -552,7 +552,7 @@ static void *unpack_data(struct object_entry *obj,
|
|||||||
git_zstream stream;
|
git_zstream stream;
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
data = xmalloc(consume ? 64*1024 : obj->size);
|
data = xmallocz(consume ? 64*1024 : obj->size);
|
||||||
inbuf = xmalloc((len < 64*1024) ? len : 64*1024);
|
inbuf = xmalloc((len < 64*1024) ? len : 64*1024);
|
||||||
|
|
||||||
memset(&stream, 0, sizeof(stream));
|
memset(&stream, 0, sizeof(stream));
|
||||||
|
@ -91,7 +91,7 @@ static void use(int bytes)
|
|||||||
static void *get_data(unsigned long size)
|
static void *get_data(unsigned long size)
|
||||||
{
|
{
|
||||||
git_zstream stream;
|
git_zstream stream;
|
||||||
void *buf = xmalloc(size);
|
void *buf = xmallocz(size);
|
||||||
|
|
||||||
memset(&stream, 0, sizeof(stream));
|
memset(&stream, 0, sizeof(stream));
|
||||||
|
|
||||||
|
3
fsck.c
3
fsck.c
@ -426,7 +426,8 @@ static int fsck_tag_buffer(struct tag *tag, const char *data,
|
|||||||
}
|
}
|
||||||
strbuf_addf(&sb, "refs/tags/%.*s", (int)(eol - buffer), buffer);
|
strbuf_addf(&sb, "refs/tags/%.*s", (int)(eol - buffer), buffer);
|
||||||
if (check_refname_format(sb.buf, 0))
|
if (check_refname_format(sb.buf, 0))
|
||||||
error_func(&tag->object, FSCK_WARN, "invalid 'tag' name: %s", buffer);
|
error_func(&tag->object, FSCK_WARN, "invalid 'tag' name: %.*s",
|
||||||
|
(int)(eol - buffer), buffer);
|
||||||
buffer = eol + 1;
|
buffer = eol + 1;
|
||||||
|
|
||||||
if (!skip_prefix(buffer, "tagger ", &buffer))
|
if (!skip_prefix(buffer, "tagger ", &buffer))
|
||||||
|
@ -229,8 +229,12 @@ test_expect_success 'tag with incorrect tag name & missing tagger' '
|
|||||||
echo $tag >.git/refs/tags/wrong &&
|
echo $tag >.git/refs/tags/wrong &&
|
||||||
test_when_finished "git update-ref -d refs/tags/wrong" &&
|
test_when_finished "git update-ref -d refs/tags/wrong" &&
|
||||||
git fsck --tags 2>out &&
|
git fsck --tags 2>out &&
|
||||||
grep "invalid .tag. name" out &&
|
|
||||||
grep "expected .tagger. line" out
|
cat >expect <<-EOF &&
|
||||||
|
warning in tag $tag: invalid '\''tag'\'' name: wrong name format
|
||||||
|
warning in tag $tag: invalid format - expected '\''tagger'\'' line
|
||||||
|
EOF
|
||||||
|
test_cmp expect out
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'tag with bad tagger' '
|
test_expect_success 'tag with bad tagger' '
|
||||||
|
Loading…
Reference in New Issue
Block a user