From: Jeff King Date: Sun, 04 Oct 2009 13:33:33 GMT Subject: Re: [PATCH] Reserve a slot for argv[0] in default_arg. Message-ID: <20091004133333.GA13894@sigill.intra.peff.net> In-Reply-To: <1254576571-29274-1-git-send-email-urkedal@nbi.dk> On Sat, Oct 03, 2009 at 03:29:31PM +0200, Petter Urkedal wrote: > Setting "av" to one slot before the allocated "default_arg" array causes > glibc abort with "free(): invalid next size (normal)" in some > configurations (Gentoo, glibc-2.9_p20081201-r2, gcc-5.3.2 with PIE). Thanks, your fix looks sane. But I am curious about whether we are triggering some glibc pickiness that is in your setup, or if we are somehow violating the assumption that we only ever look at default_arg[1] and beyond. What show-branch command did you issue to hit this? I was hoping to run it under valgrind. Also: > + if (!default_num) > + /* One unused position for argv[0]. */ > + default_arg[default_num++] = NULL; I don't know if we have a style rule for comments on single line conditionals, but I had to read this a few times to make sure it wasn't missing braces. > - ac = default_num + 1; > - av = default_arg - 1; /* ick; we would not address av[0] */ > + ac = default_num; > + av = default_arg; Any time you can remove a comment with "ick" in it is probably a good thing. ;) -Peff