Re: [PATCH] tag: avoid NULL pointer arithmetic
- From
René Scharfe <l.s.r@web.de>
- Date
- Oct 2, 2017, 13:06 UTC
- Message-ID
- <32a8b949-638a-1784-7fba-948ae32206fc@web.de>
- In-Reply-To
- <20171002050810.ryj4nv3nwqp7gb7p@sigill.intra.peff.net>
Am 02.10.2017 um 07:08 schrieb Jeff King:
Show 17 quoted lines
> On Sun, Oct 01, 2017 at 04:45:13PM +0200, René Scharfe wrote: > >> lookup_blob() etc. can return NULL if the referenced object isn't of the >> expected type. In theory it's wrong to reference the object member in >> that case. In practice it's OK because it's located at offset 0 for all >> types, so the pointer arithmetic (NULL + 0) is optimized out by the >> compiler. The issue is reported by Clang's AddressSanitizer, though. >> >> Avoid the ASan error by casting the results of the lookup functions to >> struct object pointers. That works fine with NULL pointers as well. We >> already rely on the object member being first in all object types in >> other places in the code. > > Out of curiosity, did you have to do anything to coax this out of ASan > (e.g., a specific version)? I've been running it pretty regularly and > didn't see this one (I did switch from clang to gcc a month or two ago, > but this code is pretty old, I think).
I did "make -j4 SANITIZE=undefined,address BLK_SHA1=1 test" with clang version 4.0.1-1 (tags/RELEASE_401/final), and t1450-fsck.sh failed.
René