Skip to content

Commit

Permalink
git-mktag: be more careful in reading the input.
Browse files Browse the repository at this point in the history
Instead of always assuming it can be read with a single
read() system call, loop around properly.

Pointed out by Pasky, but I ended up implementing it differently
from his suggested patch.
  • Loading branch information
Linus Torvalds committed May 29, 2005
1 parent 8b7d510 commit b97e3df
Showing 1 changed file with 12 additions and 1 deletion.
13 changes: 12 additions & 1 deletion mktag.c
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,18 @@ int main(int argc, char **argv)
usage("cat <signaturefile> | git-mktag");

// Read the signature
size = read(0, buffer, MAXSIZE);
size = 0;
for (;;) {
int ret = read(0, buffer + size, MAXSIZE - size);
if (!ret)
break;
if (ret < 0) {
if (errno == EAGAIN)
continue;
break;
}
size += ret;
}

// Verify it for some basic sanity: it needs to start with "object <sha1>\ntype "
if (verify_tag(buffer, size) < 0)
Expand Down

0 comments on commit b97e3df

Please sign in to comment.