Re: [PATCH] Reserve a slot for argv[0] in default_arg.
- From
Jeff King <peff@peff.net>
- Date
- Oct 4, 2009, 13:33 UTC
- 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