Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
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
  • Loading branch information
Junio C Hamano committed Dec 22, 2014
2 parents 14d4aab + a1e920a commit 1cb4b3d
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 6 deletions.
4 changes: 2 additions & 2 deletions builtin/index-pack.c
Expand Up @@ -447,7 +447,7 @@ static void *unpack_entry_data(unsigned long offset, unsigned long size,
if (type == OBJ_BLOB && size > big_file_threshold)
buf = fixed_buf;
else
buf = xmalloc(size);
buf = xmallocz(size);

memset(&stream, 0, sizeof(stream));
git_inflate_init(&stream);
Expand Down Expand Up @@ -552,7 +552,7 @@ static void *unpack_data(struct object_entry *obj,
git_zstream stream;
int status;

data = xmalloc(consume ? 64*1024 : obj->size);
data = xmallocz(consume ? 64*1024 : obj->size);
inbuf = xmalloc((len < 64*1024) ? len : 64*1024);

memset(&stream, 0, sizeof(stream));
Expand Down
2 changes: 1 addition & 1 deletion builtin/unpack-objects.c
Expand Up @@ -91,7 +91,7 @@ static void use(int bytes)
static void *get_data(unsigned long size)
{
git_zstream stream;
void *buf = xmalloc(size);
void *buf = xmallocz(size);

memset(&stream, 0, sizeof(stream));

Expand Down
3 changes: 2 additions & 1 deletion fsck.c
Expand Up @@ -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);
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;

if (!skip_prefix(buffer, "tagger ", &buffer))
Expand Down
8 changes: 6 additions & 2 deletions t/t1450-fsck.sh
Expand Up @@ -229,8 +229,12 @@ test_expect_success 'tag with incorrect tag name & missing tagger' '
echo $tag >.git/refs/tags/wrong &&
test_when_finished "git update-ref -d refs/tags/wrong" &&
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' '
Expand Down

0 comments on commit 1cb4b3d

Please sign in to comment.