Merge branch 'jc/ustar-checksum-is-unsigned'
"git archive" incorrectly computed the header checksum; the symptom was observed only when using pathnames with hi-bit set. * jc/ustar-checksum-is-unsigned: archive: ustar header checksum is computed unsigned
This commit is contained in:
commit
dd39379a32
@ -139,13 +139,13 @@ static void strbuf_append_ext_header(struct strbuf *sb, const char *keyword,
|
|||||||
|
|
||||||
static unsigned int ustar_header_chksum(const struct ustar_header *header)
|
static unsigned int ustar_header_chksum(const struct ustar_header *header)
|
||||||
{
|
{
|
||||||
const char *p = (const char *)header;
|
const unsigned char *p = (const unsigned char *)header;
|
||||||
unsigned int chksum = 0;
|
unsigned int chksum = 0;
|
||||||
while (p < header->chksum)
|
while (p < (const unsigned char *)header->chksum)
|
||||||
chksum += *p++;
|
chksum += *p++;
|
||||||
chksum += sizeof(header->chksum) * ' ';
|
chksum += sizeof(header->chksum) * ' ';
|
||||||
p += sizeof(header->chksum);
|
p += sizeof(header->chksum);
|
||||||
while (p < (const char *)header + sizeof(struct ustar_header))
|
while (p < (const unsigned char *)header + sizeof(struct ustar_header))
|
||||||
chksum += *p++;
|
chksum += *p++;
|
||||||
return chksum;
|
return chksum;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user