Signed-off-by: Jonathan Tan <jonathantanmy@xxxxxxxxxx> --- cache.h | 1 - packfile.c | 26 ++++++++++++++++++++++++++ packfile.h | 1 + sha1_file.c | 26 -------------------------- 4 files changed, 27 insertions(+), 27 deletions(-) diff --git a/cache.h b/cache.h index 87f65aeea..7adbc587d 100644 --- a/cache.h +++ b/cache.h @@ -1669,7 +1669,6 @@ extern off_t find_pack_entry_one(const unsigned char *sha1, struct packed_git *) extern int is_pack_valid(struct packed_git *); extern void *unpack_entry(struct packed_git *, off_t, enum object_type *, unsigned long *); -extern int unpack_object_header(struct packed_git *, struct pack_window **, off_t *, unsigned long *); /* * Iterate over the files in the loose-object parts of the object diff --git a/packfile.c b/packfile.c index fa90b643e..3543b37b8 100644 --- a/packfile.c +++ b/packfile.c @@ -949,3 +949,29 @@ unsigned long get_size_from_delta(struct packed_git *p, /* Read the result size */ return get_delta_hdr_size(&data, delta_head+sizeof(delta_head)); } + +int unpack_object_header(struct packed_git *p, + struct pack_window **w_curs, + off_t *curpos, + unsigned long *sizep) +{ + unsigned char *base; + size_t left; + size_t used; + enum object_type type; + + /* use_pack() assures us we have [base, base + 20) available + * as a range that we can look at. (Its actually the hash + * size that is assured.) With our object header encoding + * the maximum deflated object size is 2^137, which is just + * insane, so we know won't exceed what we have been given. + */ + base = use_pack(p, w_curs, *curpos, &left); + used = unpack_object_header_buffer(base, left, &type, sizep); + if (!used) { + type = OBJ_BAD; + } else + *curpos += used; + + return type; +} diff --git a/packfile.h b/packfile.h index 9c3bce6b2..d22a528b5 100644 --- a/packfile.h +++ b/packfile.h @@ -64,6 +64,7 @@ extern struct packed_git *add_packed_git(const char *path, size_t path_len, int extern unsigned long unpack_object_header_buffer(const unsigned char *buf, unsigned long len, enum object_type *type, unsigned long *sizep); extern unsigned long get_size_from_delta(struct packed_git *, struct pack_window **, off_t); +extern int unpack_object_header(struct packed_git *, struct pack_window **, off_t *, unsigned long *); extern void release_pack_memory(size_t); diff --git a/sha1_file.c b/sha1_file.c index 5d016ad6b..681dcf1c0 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -1171,32 +1171,6 @@ static const unsigned char *get_delta_base_sha1(struct packed_git *p, return NULL; } -int unpack_object_header(struct packed_git *p, - struct pack_window **w_curs, - off_t *curpos, - unsigned long *sizep) -{ - unsigned char *base; - size_t left; - size_t used; - enum object_type type; - - /* use_pack() assures us we have [base, base + 20) available - * as a range that we can look at. (Its actually the hash - * size that is assured.) With our object header encoding - * the maximum deflated object size is 2^137, which is just - * insane, so we know won't exceed what we have been given. - */ - base = use_pack(p, w_curs, *curpos, &left); - used = unpack_object_header_buffer(base, left, &type, sizep); - if (!used) { - type = OBJ_BAD; - } else - *curpos += used; - - return type; -} - static int retry_bad_packed_offset(struct packed_git *p, off_t obj_offset) { int type; -- 2.14.1.480.gb18f417b89-goog