]>
Commit | Line | Data |
---|---|---|
d19c8267 AF |
1 | BASH PATCH REPORT |
2 | ================= | |
3 | ||
4 | Bash-Release: 4.3 | |
5 | Patch-ID: bash43-023 | |
6 | ||
7 | Bug-Reported-by: Tim Friske <me@timfriske.com> | |
8 | Bug-Reference-ID: <CAM1RzOcOR9zzC2i+aeES6LtbHNHoOV+0pZEYPrqxv_QAii-RXA@mail.gmail.com> | |
9 | Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00056.html | |
10 | ||
11 | Bug-Description: | |
12 | ||
13 | Bash does not correctly parse process substitution constructs that contain | |
14 | unbalanced parentheses as part of the contained command. | |
15 | ||
16 | Patch (apply with `patch -p0'): | |
17 | ||
18 | *** ../bash-4.3-patched/subst.h 2014-01-11 21:02:27.000000000 -0500 | |
19 | --- subst.h 2014-07-20 17:25:01.000000000 -0400 | |
20 | *************** | |
21 | *** 83,87 **** | |
22 | Start extracting at (SINDEX) as if we had just seen "<(". | |
23 | Make (SINDEX) get the position just after the matching ")". */ | |
24 | ! extern char *extract_process_subst __P((char *, char *, int *)); | |
25 | #endif /* PROCESS_SUBSTITUTION */ | |
26 | ||
27 | --- 83,87 ---- | |
28 | Start extracting at (SINDEX) as if we had just seen "<(". | |
29 | Make (SINDEX) get the position just after the matching ")". */ | |
30 | ! extern char *extract_process_subst __P((char *, char *, int *, int)); | |
31 | #endif /* PROCESS_SUBSTITUTION */ | |
32 | ||
33 | *** ../bash-4.3-patched/subst.c 2014-05-15 08:26:45.000000000 -0400 | |
34 | --- subst.c 2014-07-20 17:26:44.000000000 -0400 | |
35 | *************** | |
36 | *** 1193,1202 **** | |
37 | Make (SINDEX) get the position of the matching ")". */ /*))*/ | |
38 | char * | |
39 | ! extract_process_subst (string, starter, sindex) | |
40 | char *string; | |
41 | char *starter; | |
42 | int *sindex; | |
43 | { | |
44 | return (extract_delimited_string (string, sindex, starter, "(", ")", SX_COMMAND)); | |
45 | } | |
46 | #endif /* PROCESS_SUBSTITUTION */ | |
47 | --- 1193,1208 ---- | |
48 | Make (SINDEX) get the position of the matching ")". */ /*))*/ | |
49 | char * | |
50 | ! extract_process_subst (string, starter, sindex, xflags) | |
51 | char *string; | |
52 | char *starter; | |
53 | int *sindex; | |
54 | + int xflags; | |
55 | { | |
56 | + #if 0 | |
57 | return (extract_delimited_string (string, sindex, starter, "(", ")", SX_COMMAND)); | |
58 | + #else | |
59 | + xflags |= (no_longjmp_on_fatal_error ? SX_NOLONGJMP : 0); | |
60 | + return (xparse_dolparen (string, string+*sindex, sindex, xflags)); | |
61 | + #endif | |
62 | } | |
63 | #endif /* PROCESS_SUBSTITUTION */ | |
64 | *************** | |
65 | *** 1786,1790 **** | |
66 | if (string[si] == '\0') | |
67 | CQ_RETURN(si); | |
68 | ! temp = extract_process_subst (string, (c == '<') ? "<(" : ">(", &si); | |
69 | free (temp); /* no SX_ALLOC here */ | |
70 | i = si; | |
71 | --- 1792,1796 ---- | |
72 | if (string[si] == '\0') | |
73 | CQ_RETURN(si); | |
74 | ! temp = extract_process_subst (string, (c == '<') ? "<(" : ">(", &si, 0); | |
75 | free (temp); /* no SX_ALLOC here */ | |
76 | i = si; | |
77 | *************** | |
78 | *** 8250,8254 **** | |
79 | t_index = sindex + 1; /* skip past both '<' and LPAREN */ | |
80 | ||
81 | ! temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index); /*))*/ | |
82 | sindex = t_index; | |
83 | ||
84 | --- 8256,8260 ---- | |
85 | t_index = sindex + 1; /* skip past both '<' and LPAREN */ | |
86 | ||
87 | ! temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index, 0); /*))*/ | |
88 | sindex = t_index; | |
89 | ||
90 | *** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 | |
91 | --- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 | |
92 | *************** | |
93 | *** 26,30 **** | |
94 | looks for to find the patch level (for the sccs version string). */ | |
95 | ||
96 | ! #define PATCHLEVEL 22 | |
97 | ||
98 | #endif /* _PATCHLEVEL_H_ */ | |
99 | --- 26,30 ---- | |
100 | looks for to find the patch level (for the sccs version string). */ | |
101 | ||
102 | ! #define PATCHLEVEL 23 | |
103 | ||
104 | #endif /* _PATCHLEVEL_H_ */ |