Merge branch 'jc/index-pack-reject-dups'
authorJunio C Hamano <gitster@pobox.com>
Mon, 5 Dec 2011 23:13:42 +0000 (15:13 -0800)
committerJunio C Hamano <gitster@pobox.com>
Mon, 5 Dec 2011 23:13:42 +0000 (15:13 -0800)
* jc/index-pack-reject-dups:
receive-pack, fetch-pack: reject bogus pack that records objects twice

1  2 
pack.h
diff --combined pack.h
index 324a1d73c041053cf84e81681d11e52a5be6c62b,aca4739319071ffeb201fb5bcaf55811ddf5b40f..a8d9b9f2fcc41bf56007cd48dcfcb94a7e00d3ca
--- 1/pack.h
--- 2/pack.h
+++ b/pack.h
@@@ -37,7 -37,8 +37,8 @@@ struct pack_header 
  struct pack_idx_option {
        unsigned flags;
        /* flag bits */
- #define WRITE_IDX_VERIFY 01
+ #define WRITE_IDX_VERIFY 01 /* verify only, do not write the idx file */
+ #define WRITE_IDX_STRICT 02
  
        uint32_t version;
        uint32_t off32_limit;
@@@ -70,14 -71,10 +71,14 @@@ struct pack_idx_entry 
        off_t offset;
  };
  
 +
 +struct progress;
 +typedef int (*verify_fn)(const unsigned char*, enum object_type, unsigned long, void*, int*);
 +
  extern const char *write_idx_file(const char *index_name, struct pack_idx_entry **objects, int nr_objects, const struct pack_idx_option *, unsigned char *sha1);
  extern int check_pack_crc(struct packed_git *p, struct pack_window **w_curs, off_t offset, off_t len, unsigned int nr);
  extern int verify_pack_index(struct packed_git *);
 -extern int verify_pack(struct packed_git *);
 +extern int verify_pack(struct packed_git *, verify_fn fn, struct progress *, 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);
  extern int encode_in_pack_object_header(enum object_type, uintmax_t, unsigned char *);