diff options
author | Jeff King <peff@peff.net> | 2017-03-24 13:26:50 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-03-24 12:34:07 -0700 |
commit | 2c5e2865cc3dfc053e71510415f479e165119d04 (patch) | |
tree | b718bd9758d66b6c8fc9b87f20d985bef6244df0 | |
parent | 7202a6fa8773fdcf3f374625def3c15276250b67 (diff) | |
download | git-2c5e2865cc3dfc053e71510415f479e165119d04.tar.gz |
pack.h: define largest possible encoded object sizejk/fast-import-cleanup
Several callers use fixed buffers for storing the pack
object header, and they've picked 10 as a magic number. This
is reasonable, since it handles objects up to 2^67. But
let's give them a constant so it's clear that the number
isn't pulled out of thin air.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | builtin/pack-objects.c | 6 | ||||
-rw-r--r-- | pack.h | 6 |
2 files changed, 10 insertions, 2 deletions
diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c index 463f30b694..28e7498aa1 100644 --- a/builtin/pack-objects.c +++ b/builtin/pack-objects.c @@ -239,7 +239,8 @@ static unsigned long write_no_reuse_object(struct sha1file *f, struct object_ent unsigned long limit, int usable_delta) { unsigned long size, datalen; - unsigned char header[10], dheader[10]; + unsigned char header[MAX_PACK_OBJECT_HEADER], + dheader[MAX_PACK_OBJECT_HEADER]; unsigned hdrlen; enum object_type type; void *buf; @@ -353,7 +354,8 @@ static off_t write_reuse_object(struct sha1file *f, struct object_entry *entry, off_t offset; enum object_type type = entry->type; off_t datalen; - unsigned char header[10], dheader[10]; + unsigned char header[MAX_PACK_OBJECT_HEADER], + dheader[MAX_PACK_OBJECT_HEADER]; unsigned hdrlen; if (entry->delta) @@ -84,6 +84,12 @@ extern int verify_pack(struct packed_git *, verify_fn fn, struct progress *, uin extern off_t write_pack_header(struct sha1file *f, uint32_t); extern void fixup_pack_header_footer(int, unsigned char *, const char *, uint32_t, unsigned char *, off_t); extern char *index_pack_lockfile(int fd); + +/* + * The "hdr" output buffer should be at least this big, which will handle sizes + * up to 2^67. + */ +#define MAX_PACK_OBJECT_HEADER 10 extern int encode_in_pack_object_header(unsigned char *hdr, int hdr_len, enum object_type, uintmax_t); |