From: Jeff King Date: Wed, 16 Sep 2015 18:52:57 GMT Subject: Re: [PATCH 15/67] convert trivial sprintf / strcpy calls to xsnprintf Message-ID: <20150916185256.GA2654@sigill.intra.peff.net> In-Reply-To: On Wed, Sep 16, 2015 at 11:24:27AM -0700, Junio C Hamano wrote: > Jeff King writes: > > > On Tue, Sep 15, 2015 at 11:19:21PM -0400, Eric Sunshine wrote: > > > >> > strcpy(hexbuf[stage], sha1_to_hex(ce->sha1)); > >> > - sprintf(ownbuf[stage], "%o", ce->ce_mode); > >> > + xsnprintf(ownbuf[stage], sizeof(ownbuf[stage]), "%o", ce->ce_mode); > >> > >> Interesting. I wonder if there are any (old/broken) compilers which > >> would barf on this. If we care, perhaps sizeof(ownbuf[0]) instead? > > > > Good point. I've changed it to sizeof(ownbuf[0]). > > Panda brain is lost here. What's the difference, other than that we > will now appear to be measuring the size of the thing at index 0 > while using that size to stuff data into a different location? All > elements of the array are of the same size so there wouldn't be any > difference either way, no? Correct. The original is sane and gcc does the right thing. The question is whether some compiler would complain that "stage" is not a constant in the sizeof() expression. I don't know if any compiler would do so, but it is easy enough to be conservative. -Peff