]>
Commit | Line | Data |
---|---|---|
1 | BASH PATCH REPORT | |
2 | ================= | |
3 | ||
4 | Bash-Release: 4.2 | |
5 | Patch-ID: bash42-023 | |
6 | ||
7 | Bug-Reported-by: Ewan Mellor <Ewan.Mellor@eu.citrix.com> | |
8 | Bug-Reference-ID: <6005BE083BF501439A84DC3523BAC82DC4B964FD12@LONPMAILBOX01.citrite.net> | |
9 | Bug-Reference-URL: | |
10 | ||
11 | Bug-Description: | |
12 | ||
13 | Under some circumstances, an exit trap triggered by a bad substitution | |
14 | error when errexit is enabled will cause the shell to exit with an | |
15 | incorrect exit status (0). | |
16 | ||
17 | Patch (apply with `patch -p0'): | |
18 | ||
19 | *** ../bash-4.2-patched/subst.c 2011-11-21 12:04:38.000000000 -0500 | |
20 | --- subst.c 2012-02-08 13:36:28.000000000 -0500 | |
21 | *************** | |
22 | *** 7275,7278 **** | |
23 | --- 7281,7285 ---- | |
24 | case '\0': | |
25 | bad_substitution: | |
26 | + last_command_exit_value = EXECUTION_FAILURE; | |
27 | report_error (_("%s: bad substitution"), string ? string : "??"); | |
28 | FREE (value); | |
29 | *** ../bash-4.2-patched/error.c 2009-08-21 22:31:31.000000000 -0400 | |
30 | --- error.c 2012-02-25 15:54:40.000000000 -0500 | |
31 | *************** | |
32 | *** 201,205 **** | |
33 | va_end (args); | |
34 | if (exit_immediately_on_error) | |
35 | ! exit_shell (1); | |
36 | } | |
37 | ||
38 | --- 201,209 ---- | |
39 | va_end (args); | |
40 | if (exit_immediately_on_error) | |
41 | ! { | |
42 | ! if (last_command_exit_value == 0) | |
43 | ! last_command_exit_value = 1; | |
44 | ! exit_shell (last_command_exit_value); | |
45 | ! } | |
46 | } | |
47 | ||
48 | *** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010 | |
49 | --- patchlevel.h Thu Feb 24 21:41:34 2011 | |
50 | *************** | |
51 | *** 26,30 **** | |
52 | looks for to find the patch level (for the sccs version string). */ | |
53 | ||
54 | ! #define PATCHLEVEL 22 | |
55 | ||
56 | #endif /* _PATCHLEVEL_H_ */ | |
57 | --- 26,30 ---- | |
58 | looks for to find the patch level (for the sccs version string). */ | |
59 | ||
60 | ! #define PATCHLEVEL 23 | |
61 | ||
62 | #endif /* _PATCHLEVEL_H_ */ |