From: Simon 'corecode' Schubert Date: Fri, 19 Jan 2007 03:02:42 GMT Subject: Re: [PATCH] Don't call fstat() on stdin in index-pack. Message-ID: <45B034D2.6010007@fs.ei.tum.de> In-Reply-To: <20070119024436.GQ8624@jukie.net> Bart Trojanowski wrote: > /* If input_fd is a file, we should have reached its end now. */ > - if (fstat(input_fd, &st)) > - die("cannot fstat packfile: %s", strerror(errno)); > - if (S_ISREG(st.st_mode) && st.st_size != consumed_bytes) > - die("pack has junk at the end"); > + if (input_fd) { > + if (fstat(input_fd, &st)) > + die("cannot fstat packfile: %s", strerror(errno)); > + if (S_ISREG(st.st_mode) && st.st_size != consumed_bytes) > + die("pack has junk at the end"); > + } This is clearly the wrong fix. input_fd being 0 doesn't mean that it is *not* a regular file. Only doing a fstat can tell. You are simply hiding your real issue there, which is that you can't fstat on a pipe or whatever input_fd is. The problem here is that your 64bit kernel can't fit the data into your struct stat provided by your 32bit libc. Not a problem of git. However, it would be interesting to know what exactly produces the EOVERFLOW. cheers simon -- Serve - BSD +++ RENT this banner advert +++ ASCII Ribbon /"\ Work - Mac +++ space for low €€€ NOW!1 +++ Campaign \ / Party Enjoy Relax | http://dragonflybsd.org Against HTML \ Dude 2c 2 the max ! http://golden-apple.biz Mail + News / \