git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Checksum incorrectly uses signed values
@ 2012-06-14  1:16 Brendan Brewster
  2012-06-14  4:35 ` Tomas Carnecky
  0 siblings, 1 reply; 3+ messages in thread
From: Brendan Brewster @ 2012-06-14  1:16 UTC (permalink / raw)
  To: git

Hi,

I initially reported this issue to another developer thinking the
issue resided there but after some testing and discussion, have found
that the issue is not there but possibly here :)

The issue, in summary, is that 7-zip was unable to untar a tar created
via a "git archive" whereas gnu tar can. It seem that it may be the
case that git is incorrectly using signed values when creating the
checksum.

As Igor commented in the other aforementioned thread, "[t]hey use
'char' (that is 'signed char' by default in most compilers). BUT
correct TAR must use sum of unsigned values."

Please see the following:

1) The thread previously opened with Igor/7-Zip:
http://sourceforge.net/projects/sevenzip/forums/forum/45798/topic/5322604
2) http://www.gnu.org/software/tar/manual/html_node/Checksumming.html
3) TAR source code:
     tar_checksum
      and
     simple_finish_header
      functions.
4) GIT source code that calculates checksum: ustar_header_chksum
function in archive-tar.c. For reference, here is the snippet of the
git source code in question:

git-git-f623ca1\archive-tar.c
static unsigned int ustar_header_chksum(const struct ustar_header *header)
{
       const char *p = (const char *)header;
       unsigned int chksum = 0;
       while (p < header->chksum)
               chksum += *p++;
       chksum += sizeof(header->chksum) * ' ';
       p += sizeof(header->chksum);
       while (p < (const char *)header + sizeof(struct ustar_header))
               chksum += *p++;
       return chksum;
}

Can someone please look into this and possibly redirect if needed?

Thanks,
Brendan

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

end of thread, other threads:[~2012-06-14 14:51 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-06-14  1:16 Checksum incorrectly uses signed values Brendan Brewster
2012-06-14  4:35 ` Tomas Carnecky
     [not found]   ` <CA+-ctj7v2v+=Sa2A+wSieXp26Q4wgVrTJnwyCt_erfPBmpdcdA@mail.gmail.com>
2012-06-14 14:50     ` Brendan Brewster

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).