ash: trap with bad signal name should not abort
function old new delta trapcmd 236 271 +35 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
14
shell/ash.c
14
shell/ash.c
@@ -12281,7 +12281,7 @@ trapcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
|
||||
{
|
||||
char *action;
|
||||
char **ap;
|
||||
int signo;
|
||||
int signo, exitcode;
|
||||
|
||||
nextopt(nullstr);
|
||||
ap = argptr;
|
||||
@@ -12314,10 +12314,15 @@ trapcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
|
||||
action = NULL;
|
||||
if (ap[1])
|
||||
action = *ap++;
|
||||
exitcode = 0;
|
||||
while (*ap) {
|
||||
signo = get_signum(*ap);
|
||||
if (signo < 0)
|
||||
ash_msg_and_raise_error("%s: bad trap", *ap);
|
||||
if (signo < 0) {
|
||||
/* Mimic bash message exactly */
|
||||
ash_msg("%s: invalid signal specification", *ap);
|
||||
exitcode = 1;
|
||||
goto next;
|
||||
}
|
||||
INT_OFF;
|
||||
if (action) {
|
||||
if (LONE_DASH(action))
|
||||
@@ -12330,9 +12335,10 @@ trapcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
|
||||
if (signo != 0)
|
||||
setsignal(signo);
|
||||
INT_ON;
|
||||
next:
|
||||
ap++;
|
||||
}
|
||||
return 0;
|
||||
return exitcode;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user