bin/57554: sh(1) incorrect handling of quoted parameter
expansion
Jilles Tjoelker
jilles at stack.nl
Thu Sep 10 20:40:03 UTC 2009
The following reply was made to PR bin/57554; it has been noted by GNATS.
From: Jilles Tjoelker <jilles at stack.nl>
To: bug-followup at FreeBSD.org, mark at thuvia.org
Cc:
Subject: Re: bin/57554: sh(1) incorrect handling of quoted parameter
expansion
Date: Thu, 10 Sep 2009 22:31:18 +0200
Sorry for waiting so long with this.
Your patch seems to work after fixing the conflicts (fairly easy).
However, it (and also NetBSD /bin/sh) has a memory leak if there is a
syntax error or SIGINT within 32 or more levels of variable expansion.
Some possible fixes:
- remove the dynamic allocation and just use the old broken way for
level 32 and higher
- add an exception handler when allocating dblquotep for the first time
(not for all readtoken1 calls, that would probably be rather slow)
- link it to a list pointed to by a global variable so it can be cleaned
up eventually (note that things like ${X-$(printf %x ${Y-${Z}})} are
possible so a single global does not do); this is somewhat similar to
memalloc.c's "stack" which probably cannot be used for this as it is
already used for assembling the resulting word
--
Jilles Tjoelker
More information about the freebsd-bugs
mailing list