git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Understanding Index Header
@ 2018-10-06 21:13 Farhan Khan
  2018-10-06 22:31 ` Kevin Daudt
  0 siblings, 1 reply; 2+ messages in thread
From: Farhan Khan @ 2018-10-06 21:13 UTC (permalink / raw)
  To: git

Hi all,

I am writing a program that parses out the .git/index file. I am
reading the git index header documentation, but I seem to be getting
jibberish data.
https://github.com/git/git/blob/master/Documentation/technical/index-format.txt

The first 12 bytes are the signature, version and entries. Great so far.

Afterwards, I try to read the extension signature, which the
documentation says: "4-byte extension signature. If the first byte is
'A'..'Z' the
extension is optional and can be ignored.". I am getting jibberish. Is
this expected?

Then, the extension size comes back as 35560000 (after ntohl()). That
seems extremely high. My structure is as follows:

struct _indexfile_hdr {
        unsigned char   sig[4];         /* Always "DIRC" */
        uint32_t        version;        /* Version Number */
        uint32_t        entries;        /* Number of extensions */
        unsigned char   extsig[4];      /* Extension signature */
        uint32_t        extsize;        /* Size of the extension */
        uint8_t         sha[8];         /* SHA1 of index before checksum */
} __packed;

Am I doing something wrong? Is there some offset or padding that I missed?

Thanks,
--
Farhan Khan
PGP Fingerprint: B28D 2726 E2BC A97E 3854 5ABE 9A9F 00BC D525 16EE

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2018-10-06 22:32 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-10-06 21:13 Understanding Index Header Farhan Khan
2018-10-06 22:31 ` Kevin Daudt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).