From: Nguyen Thai Ngoc Duy Date: Wed, 16 Nov 2011 13:57:52 GMT Subject: Re: [RFC 2/2] Make misuse of get_pathname() buffers detectable by valgrind Message-ID: In-Reply-To: <1317097687-11098-3-git-send-email-mhagger@alum.mit.edu> On Tue, Sep 27, 2011 at 11:28 AM, Michael Haggerty wrote: > A temporary buffer produced by get_pathname() is recycled after a few > subsequent calls of get_pathname().  The use of such a buffer after it > has been recycled can result in the wrong file being accessed with > very strange effects.  Moreover, such a bug can lie dormant until code > elsewhere is changed to use a temporary buffer, causing very > mysterious, nonlocal failures that are hard to analyze. > > Add a second implementation of get_pathname() (activated if the > VALGRIND preprocessor macro is defined) that allocates and frees > buffers instead of recycling statically-allocated buffers.  This does > not make the problem less serious, but it turns the errors into > access-after-free errors, making it possible to locate the guilty code > using valgrind. > > Signed-off-by: Michael Haggerty > --- > > I believe that it is frowned upon to use #ifdefs in git code, but no > good alternative is obvious to me for this type of use.  Suggestions > are welcome. Enable the code based on an environment variable, e.g. GIT_DEBUG_FENCE, then enable it by default in test-lib.sh :-) -- Duy