diff options
author | Dennis Stosberg <dennis@stosberg.net> | 2006-05-11 19:36:32 +0200 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-05-13 10:43:16 -0700 |
commit | 66561f5a776f2343331fff5b98adff1000622f42 (patch) | |
tree | 1c480663e03984fd23226964e54eba7a7c6a9eb9 /sha1_file.c | |
parent | d1802851b0c112a065b43e3f83d631f867b7e1ce (diff) | |
download | git-66561f5a776f2343331fff5b98adff1000622f42.tar.gz git-66561f5a776f2343331fff5b98adff1000622f42.tar.xz |
Fix git-pack-objects for 64-bit platforms
The offset of an object in the pack is recorded as a 4-byte integer
in the index file. When reading the offset from the mmap'ed index
in prepare_pack_revindex(), the address is dereferenced as a long*.
This works fine as long as the long type is four bytes wide. On
NetBSD/sparc64, however, a long is 8 bytes wide and so dereferencing
the offset produces garbage.
[jc: taking suggestion by Linus to use uint32_t]
Signed-off-by: Dennis Stosberg <dennis@stosberg.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'sha1_file.c')
-rw-r--r-- | sha1_file.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sha1_file.c b/sha1_file.c index f2d33afb2..642c45ad7 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -1126,7 +1126,7 @@ int find_pack_entry_one(const unsigned char *sha1, int mi = (lo + hi) / 2; int cmp = memcmp(index + 24 * mi + 4, sha1, 20); if (!cmp) { - e->offset = ntohl(*((int*)(index + 24 * mi))); + e->offset = ntohl(*((uint32_t *)(index + 24 * mi))); memcpy(e->sha1, sha1, 20); e->p = p; return 1; |