[PATCH] avoid malloc(0) in getdents

Dmitry V. Levin ldv at altlinux.org
Thu Oct 8 00:22:17 UTC 2009


On Wed, Oct 07, 2009 at 07:48:50PM -0400, Mike Frysinger wrote:
> On Wednesday 07 October 2009 19:32:39 Dmitry V. Levin wrote:
> > On Wed, Oct 07, 2009 at 05:25:01AM -0400, Mike Frysinger wrote:
> > > When getdents finishes processing, it returns 0.  Strace uses this to
> > > then try and do malloc(0), but on some systems this will always return
> > > NULL. Since the code won't read the pointer in question if len is 0, then
> > > don't abort on the malloc(0) == NULL case.
> > 
> > When len == 0, the buffer allocated by malloc(0) is not used anyway, so
> > there are no need to malloc(0) here even on regular systems where
> > malloc(0) allocates memory, right?
> 
> yes, this is true.  it would be nice to write it like:
> 	if (len && (buf = malloc(len)) == NULL) {
> but then gcc whines that buf might be used uninitialized, which is why i wrote 
> it the way i did (less code change that way).
> 
> it could be written like so:
> 	buf = len ? malloc(len) : NULL;
> 	if (len && !buf) {

OK, let's change it this way.


-- 
ldv
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.strace.io/pipermail/strace-devel/attachments/20091008/f3f0155d/attachment.bin>


More information about the Strace-devel mailing list