hush: fix a case where EXIT trap may modify its code mid-flight
function old new delta hush_exit 93 99 +6 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
b8d076b00b
commit
46f839c3f7
@ -1936,7 +1936,7 @@ static void hush_exit(int exitcode)
|
||||
if (G.exiting <= 0 && G_traps && G_traps[0] && G_traps[0][0]) {
|
||||
char *argv[3];
|
||||
/* argv[0] is unused */
|
||||
argv[1] = G_traps[0];
|
||||
argv[1] = xstrdup(G_traps[0]); /* copy, since EXIT trap handler may modify G_traps[0] */
|
||||
argv[2] = NULL;
|
||||
G.exiting = 1; /* prevent EXIT trap recursion */
|
||||
/* Note: G_traps[0] is not cleared!
|
||||
|
Loading…
Reference in New Issue
Block a user