From a58d301405d96fb8ff87cffa3cabe3b110214a31 Mon Sep 17 00:00:00 2001 From: Jonathan Nieder Date: Tue, 15 Mar 2011 16:01:34 +0800 Subject: [EXPAND] Free IFS state after here document expansion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Here's another bug bisecting to f42e443bb ([EXPAND] Fix ifsfirst/ifslastp leak, 2010-09-08). It was found with the following test case, based on the configure script for Tracker: dash -x -c ' <<-_ACEOF $@ _ACEOF exec ' - abcdefgh + + exec �a exec: 1: : Permission denied The missing ifsfree call is in expandarg when it returns to openhere during here document expansion. Reported-by: Aurelien Jarno Signed-off-by: Jonathan Nieder Signed-off-by: Herbert Xu --- src/expand.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/expand.c b/src/expand.c index f155ea0..ce60fe9 100644 --- a/src/expand.c +++ b/src/expand.c @@ -194,7 +194,8 @@ expandarg(union node *arg, struct arglist *arglist, int flag) p = _STPUTC('\0', expdest); expdest = p - 1; if (arglist == NULL) { - return; /* here document expanded */ + /* here document expanded */ + goto out; } p = grabstackstr(p); exparg.lastp = &exparg.list; @@ -212,12 +213,14 @@ expandarg(union node *arg, struct arglist *arglist, int flag) *exparg.lastp = sp; exparg.lastp = &sp->next; } - ifsfree(); *exparg.lastp = NULL; if (exparg.list) { *arglist->lastp = exparg.list; arglist->lastp = exparg.lastp; } + +out: + ifsfree(); } -- cgit 1.4.1 /torus/diff/server.c?id=96b09c86e6838c8bd2e39ff70c4840332a2d06ea&follow=1'>diff homepage
Commit message (Collapse)Author
2018-03-05Miscellaneous code cleanupJune McEnroe
2018-03-05Pass message structs by valueJune McEnroe
2018-03-05Use stdio in merge and metaJune McEnroe
2018-03-05Clean up spawn constantsJune McEnroe
2018-03-05Rename Tile timestamps {create,modify,access}TimeJune McEnroe
2018-03-05Pack message type enumsJune McEnroe
2018-03-05Undef COLOR_ constants in torus.hJune McEnroe
2018-03-05Generate tagsJune McEnroe
2017-10-03Simplify Makefile with pattern ruleJune McEnroe
Insert rant about how GNU make handles the .c rule with extra dependencies. Also I don't care that everything links curses now.
2017-09-27Remove leading blank linesJune McEnroe
2017-09-27Add merge.c to READMEJune McEnroe
2017-09-03Assert client coords are valid after movementJune McEnroe
2017-09-03Relicense AGPLJune McEnroe
I know it's already published under a permissive license in what is probably its final form, but I want to license it AGPL anyway on principle following some conversations I had about open source, corporations and copyleft.
2017-09-01Revert "Add client readOnly mode"June McEnroe
This reverts commit 9a6c9c91c8092603b914cc0b3085d059e162ca29.
2017-09-01Remove clientRemove call from clientCastJune McEnroe
If an error occurs on a client socket during a broadcast, that client will show up in the kqueue loop with EV_EOF and get removed that way. Tested by sending SIGKILL to a client and watching its cursor disappear.
2017-09-01Add client readOnly modeJune McEnroe
2017-08-31Clean up merge toolJune McEnroe
Choose the version with the most recent access if the modify times are the same.
2017-08-31Choose B for tiles with equal modify timesJune McEnroe
This way newer access counts and times will be preserved.
2017-08-31Add quick data file merge toolJune McEnroe
Hopefully I won't have to use it ever again.
2017-08-30Use only foreground color for selecting spawnJune McEnroe
2017-08-29Add four additional spawnsJune McEnroe
2017-08-28Add respawningJune McEnroe
2017-08-26Move license above includesJune McEnroe
Why was it down there?
2017-08-26Snapshot metadataJune McEnroe
2017-08-26Add meta.c to READMEJune McEnroe
2017-08-26Use MakefileJune McEnroe