summaryrefslogtreecommitdiffstats
path: root/meta
diff options
context:
space:
mode:
authorCatalin Popeanga <Catalin.Popeanga@enea.com>2014-10-09 14:24:29 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-10-10 18:06:08 +0100
commit1d21eaf4e0b4161aac45e30c20f69e603dadcf48 (patch)
tree9144bf72561df92838f467e7ee6aa3d425e3fd5c /meta
parent95821e8566147841e726678b76a5397b971a6e57 (diff)
downloadpoky-1d21eaf4e0b4161aac45e30c20f69e603dadcf48.tar.gz
bash: Fix for CVE-2014-7186 and CVE-2014-7187
This is a followup patch to incomplete CVE-2014-6271 fix code execution via specially-crafted environment https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-7186 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-7187 (From OE-Core rev: 153d1125659df9e5c09e35a58bd51be184cb13c1) Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta')
-rw-r--r--meta/recipes-extended/bash/bash-3.2.48/cve-2014-7186_cve-2014-7187.patch99
-rw-r--r--meta/recipes-extended/bash/bash/cve-2014-7186_cve-2014-7187.patch1315
-rw-r--r--meta/recipes-extended/bash/bash_3.2.48.bb1
-rw-r--r--meta/recipes-extended/bash/bash_4.3.bb1
4 files changed, 1416 insertions, 0 deletions
diff --git a/meta/recipes-extended/bash/bash-3.2.48/cve-2014-7186_cve-2014-7187.patch b/meta/recipes-extended/bash/bash-3.2.48/cve-2014-7186_cve-2014-7187.patch
new file mode 100644
index 0000000000..dcb8ea44c5
--- /dev/null
+++ b/meta/recipes-extended/bash/bash-3.2.48/cve-2014-7186_cve-2014-7187.patch
@@ -0,0 +1,99 @@
1bash: Fix for CVE-2014-7186 and CVE-2014-7187
2
3Upstream-Status: Backport {GNU Patch-ID: bash32-055}
4
5Downloaded from: http://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-055
6
7Author: Chet Ramey <chet.ramey@case.edu>
8Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
9
10 BASH PATCH REPORT
11 =================
12
13Bash-Release: 3.2
14Patch-ID: bash32-055
15
16Bug-Reported-by: Florian Weimer <fweimer@redhat.com>
17Bug-Reference-ID:
18Bug-Reference-URL:
19
20Bug-Description:
21
22There are two local buffer overflows in parse.y that can cause the shell
23to dump core when given many here-documents attached to a single command
24or many nested loops.
25---
26--- a/parse.y 2014-09-27 12:17:16.000000000 -0400
27+++ b/parse.y 2014-09-30 19:43:22.000000000 -0400
28@@ -166,4 +166,7 @@
29 static int reserved_word_acceptable __P((int));
30 static int yylex __P((void));
31+
32+static void push_heredoc __P((REDIRECT *));
33+static char *mk_alexpansion __P((char *));
34 static int alias_expand_token __P((char *));
35 static int time_command_acceptable __P((void));
36@@ -254,5 +257,7 @@
37 /* Variables to manage the task of reading here documents, because we need to
38 defer the reading until after a complete command has been collected. */
39-static REDIRECT *redir_stack[10];
40+#define HEREDOC_MAX 16
41+
42+static REDIRECT *redir_stack[HEREDOC_MAX];
43 int need_here_doc;
44
45@@ -280,5 +285,5 @@
46 index is decremented after a case, select, or for command is parsed. */
47 #define MAX_CASE_NEST 128
48-static int word_lineno[MAX_CASE_NEST];
49+static int word_lineno[MAX_CASE_NEST+1];
50 static int word_top = -1;
51
52@@ -425,5 +430,5 @@
53 redir.filename = $2;
54 $$ = make_redirection (0, r_reading_until, redir);
55- redir_stack[need_here_doc++] = $$;
56+ push_heredoc ($$);
57 }
58 | NUMBER LESS_LESS WORD
59@@ -431,5 +436,5 @@
60 redir.filename = $3;
61 $$ = make_redirection ($1, r_reading_until, redir);
62- redir_stack[need_here_doc++] = $$;
63+ push_heredoc ($$);
64 }
65 | LESS_LESS_LESS WORD
66@@ -488,5 +493,5 @@
67 $$ = make_redirection
68 (0, r_deblank_reading_until, redir);
69- redir_stack[need_here_doc++] = $$;
70+ push_heredoc ($$);
71 }
72 | NUMBER LESS_LESS_MINUS WORD
73@@ -495,5 +500,5 @@
74 $$ = make_redirection
75 ($1, r_deblank_reading_until, redir);
76- redir_stack[need_here_doc++] = $$;
77+ push_heredoc ($$);
78 }
79 | GREATER_AND '-'
80@@ -2214,4 +2219,19 @@
81 static int esacs_needed_count;
82
83+static void
84+push_heredoc (r)
85+ REDIRECT *r;
86+{
87+ if (need_here_doc >= HEREDOC_MAX)
88+ {
89+ last_command_exit_value = EX_BADUSAGE;
90+ need_here_doc = 0;
91+ report_syntax_error (_("maximum here-document count exceeded"));
92+ reset_parser ();
93+ exit_shell (last_command_exit_value);
94+ }
95+ redir_stack[need_here_doc++] = r;
96+}
97+
98 void
99 gather_here_documents ()
diff --git a/meta/recipes-extended/bash/bash/cve-2014-7186_cve-2014-7187.patch b/meta/recipes-extended/bash/bash/cve-2014-7186_cve-2014-7187.patch
new file mode 100644
index 0000000000..3382567a21
--- /dev/null
+++ b/meta/recipes-extended/bash/bash/cve-2014-7186_cve-2014-7187.patch
@@ -0,0 +1,1315 @@
1bash: Fix for CVE-2014-7186 and CVE-2014-7187
2
3Upstream-Status: Backport {GNU Patch-ID: bash43-028}
4
5Downloaded from: http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-028
6
7Author: Chet Ramey <chet.ramey@case.edu>
8Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
9
10 BASH PATCH REPORT
11 =================
12
13Bash-Release: 4.3
14Patch-ID: bash43-028
15
16Bug-Reported-by: Florian Weimer <fweimer@redhat.com>
17Bug-Reference-ID:
18Bug-Reference-URL:
19
20Bug-Description:
21
22There are two local buffer overflows in parse.y that can cause the shell
23to dump core when given many here-documents attached to a single command
24or many nested loops.
25---
26--- a/parse.y 2014-09-25 23:02:35.000000000 -0400
27+++ b/parse.y 2014-09-29 16:47:03.000000000 -0400
28@@ -169,4 +169,7 @@
29 static int reserved_word_acceptable __P((int));
30 static int yylex __P((void));
31+
32+static void push_heredoc __P((REDIRECT *));
33+static char *mk_alexpansion __P((char *));
34 static int alias_expand_token __P((char *));
35 static int time_command_acceptable __P((void));
36@@ -266,5 +269,7 @@
37 /* Variables to manage the task of reading here documents, because we need to
38 defer the reading until after a complete command has been collected. */
39-static REDIRECT *redir_stack[10];
40+#define HEREDOC_MAX 16
41+
42+static REDIRECT *redir_stack[HEREDOC_MAX];
43 int need_here_doc;
44
45@@ -308,5 +313,5 @@
46 index is decremented after a case, select, or for command is parsed. */
47 #define MAX_CASE_NEST 128
48-static int word_lineno[MAX_CASE_NEST];
49+static int word_lineno[MAX_CASE_NEST+1];
50 static int word_top = -1;
51
52@@ -521,5 +526,5 @@
53 redir.filename = $2;
54 $$ = make_redirection (source, r_reading_until, redir, 0);
55- redir_stack[need_here_doc++] = $$;
56+ push_heredoc ($$);
57 }
58 | NUMBER LESS_LESS WORD
59@@ -528,5 +533,5 @@
60 redir.filename = $3;
61 $$ = make_redirection (source, r_reading_until, redir, 0);
62- redir_stack[need_here_doc++] = $$;
63+ push_heredoc ($$);
64 }
65 | REDIR_WORD LESS_LESS WORD
66@@ -535,5 +540,5 @@
67 redir.filename = $3;
68 $$ = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
69- redir_stack[need_here_doc++] = $$;
70+ push_heredoc ($$);
71 }
72 | LESS_LESS_MINUS WORD
73@@ -542,5 +547,5 @@
74 redir.filename = $2;
75 $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
76- redir_stack[need_here_doc++] = $$;
77+ push_heredoc ($$);
78 }
79 | NUMBER LESS_LESS_MINUS WORD
80@@ -549,5 +554,5 @@
81 redir.filename = $3;
82 $$ = make_redirection (source, r_deblank_reading_until, redir, 0);
83- redir_stack[need_here_doc++] = $$;
84+ push_heredoc ($$);
85 }
86 | REDIR_WORD LESS_LESS_MINUS WORD
87@@ -556,5 +561,5 @@
88 redir.filename = $3;
89 $$ = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
90- redir_stack[need_here_doc++] = $$;
91+ push_heredoc ($$);
92 }
93 | LESS_LESS_LESS WORD
94@@ -2637,4 +2642,19 @@
95 static int esacs_needed_count;
96
97+static void
98+push_heredoc (r)
99+ REDIRECT *r;
100+{
101+ if (need_here_doc >= HEREDOC_MAX)
102+ {
103+ last_command_exit_value = EX_BADUSAGE;
104+ need_here_doc = 0;
105+ report_syntax_error (_("maximum here-document count exceeded"));
106+ reset_parser ();
107+ exit_shell (last_command_exit_value);
108+ }
109+ redir_stack[need_here_doc++] = r;
110+}
111+
112 void
113 gather_here_documents ()
114--- a/y.tab.c 2014-10-01 11:38:24.000000000 -0400
115+++ b/y.tab.c 2014-10-01 12:46:11.000000000 -0400
116@@ -169,5 +169,5 @@
117
118 /* Copy the first part of user declarations. */
119-#line 21 "/usr/homes/chet/src/bash/src/parse.y"
120+#line 21 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
121
122 #include "config.h"
123@@ -320,4 +320,7 @@
124 static int reserved_word_acceptable __P((int));
125 static int yylex __P((void));
126+
127+static void push_heredoc __P((REDIRECT *));
128+static char *mk_alexpansion __P((char *));
129 static int alias_expand_token __P((char *));
130 static int time_command_acceptable __P((void));
131@@ -417,5 +420,7 @@
132 /* Variables to manage the task of reading here documents, because we need to
133 defer the reading until after a complete command has been collected. */
134-static REDIRECT *redir_stack[10];
135+#define HEREDOC_MAX 16
136+
137+static REDIRECT *redir_stack[HEREDOC_MAX];
138 int need_here_doc;
139
140@@ -459,5 +464,5 @@
141 index is decremented after a case, select, or for command is parsed. */
142 #define MAX_CASE_NEST 128
143-static int word_lineno[MAX_CASE_NEST];
144+static int word_lineno[MAX_CASE_NEST+1];
145 static int word_top = -1;
146
147@@ -493,5 +498,5 @@
148 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
149 typedef union YYSTYPE
150-#line 324 "/usr/homes/chet/src/bash/src/parse.y"
151+#line 329 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
152 {
153 WORD_DESC *word; /* the word that we read. */
154@@ -504,5 +509,5 @@
155 }
156 /* Line 193 of yacc.c. */
157-#line 507 "y.tab.c"
158+#line 512 "y.tab.c"
159 YYSTYPE;
160 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
161@@ -517,5 +522,5 @@
162
163 /* Line 216 of yacc.c. */
164-#line 520 "y.tab.c"
165+#line 525 "y.tab.c"
166
167 #ifdef short
168@@ -887,21 +892,21 @@
169 static const yytype_uint16 yyrline[] =
170 {
171- 0, 377, 377, 388, 397, 412, 422, 424, 428, 434,
172- 440, 446, 452, 458, 464, 470, 476, 482, 488, 494,
173- 500, 506, 512, 518, 525, 532, 539, 546, 553, 560,
174- 566, 572, 578, 584, 590, 596, 602, 608, 614, 620,
175- 626, 632, 638, 644, 650, 656, 662, 668, 674, 680,
176- 686, 692, 700, 702, 704, 708, 712, 723, 725, 729,
177- 731, 733, 749, 751, 755, 757, 759, 761, 763, 765,
178- 767, 769, 771, 773, 775, 779, 784, 789, 794, 799,
179- 804, 809, 814, 821, 826, 831, 836, 843, 848, 853,
180- 858, 863, 868, 875, 880, 885, 892, 895, 898, 902,
181- 904, 935, 942, 947, 964, 969, 986, 993, 995, 997,
182- 1002, 1006, 1010, 1014, 1016, 1018, 1022, 1023, 1027, 1029,
183- 1031, 1033, 1037, 1039, 1041, 1043, 1045, 1047, 1051, 1053,
184- 1062, 1070, 1071, 1077, 1078, 1085, 1089, 1091, 1093, 1100,
185- 1102, 1104, 1108, 1109, 1112, 1114, 1116, 1120, 1121, 1130,
186- 1143, 1159, 1174, 1176, 1178, 1185, 1188, 1192, 1194, 1200,
187- 1206, 1223, 1243, 1245, 1268, 1272, 1274, 1276
188+ 0, 382, 382, 393, 402, 417, 427, 429, 433, 439,
189+ 445, 451, 457, 463, 469, 475, 481, 487, 493, 499,
190+ 505, 511, 517, 523, 530, 537, 544, 551, 558, 565,
191+ 571, 577, 583, 589, 595, 601, 607, 613, 619, 625,
192+ 631, 637, 643, 649, 655, 661, 667, 673, 679, 685,
193+ 691, 697, 705, 707, 709, 713, 717, 728, 730, 734,
194+ 736, 738, 754, 756, 760, 762, 764, 766, 768, 770,
195+ 772, 774, 776, 778, 780, 784, 789, 794, 799, 804,
196+ 809, 814, 819, 826, 831, 836, 841, 848, 853, 858,
197+ 863, 868, 873, 880, 885, 890, 897, 900, 903, 907,
198+ 909, 940, 947, 952, 969, 974, 991, 998, 1000, 1002,
199+ 1007, 1011, 1015, 1019, 1021, 1023, 1027, 1028, 1032, 1034,
200+ 1036, 1038, 1042, 1044, 1046, 1048, 1050, 1052, 1056, 1058,
201+ 1067, 1075, 1076, 1082, 1083, 1090, 1094, 1096, 1098, 1105,
202+ 1107, 1109, 1113, 1114, 1117, 1119, 1121, 1125, 1126, 1135,
203+ 1148, 1164, 1179, 1181, 1183, 1190, 1193, 1197, 1199, 1205,
204+ 1211, 1228, 1248, 1250, 1273, 1277, 1279, 1281
205 };
206 #endif
207@@ -2094,5 +2099,5 @@
208 {
209 case 2:
210-#line 378 "/usr/homes/chet/src/bash/src/parse.y"
211+#line 383 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
212 {
213 /* Case of regular command. Discard the error
214@@ -2108,5 +2113,5 @@
215
216 case 3:
217-#line 389 "/usr/homes/chet/src/bash/src/parse.y"
218+#line 394 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
219 {
220 /* Case of regular command, but not a very
221@@ -2120,5 +2125,5 @@
222
223 case 4:
224-#line 398 "/usr/homes/chet/src/bash/src/parse.y"
225+#line 403 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
226 {
227 /* Error during parsing. Return NULL command. */
228@@ -2138,5 +2143,5 @@
229
230 case 5:
231-#line 413 "/usr/homes/chet/src/bash/src/parse.y"
232+#line 418 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
233 {
234 /* Case of EOF seen by itself. Do ignoreeof or
235@@ -2149,15 +2154,15 @@
236
237 case 6:
238-#line 423 "/usr/homes/chet/src/bash/src/parse.y"
239+#line 428 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
240 { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
241 break;
242
243 case 7:
244-#line 425 "/usr/homes/chet/src/bash/src/parse.y"
245+#line 430 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
246 { (yyval.word_list) = make_word_list ((yyvsp[(2) - (2)].word), (yyvsp[(1) - (2)].word_list)); }
247 break;
248
249 case 8:
250-#line 429 "/usr/homes/chet/src/bash/src/parse.y"
251+#line 434 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
252 {
253 source.dest = 1;
254@@ -2168,5 +2173,5 @@
255
256 case 9:
257-#line 435 "/usr/homes/chet/src/bash/src/parse.y"
258+#line 440 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
259 {
260 source.dest = 0;
261@@ -2177,5 +2182,5 @@
262
263 case 10:
264-#line 441 "/usr/homes/chet/src/bash/src/parse.y"
265+#line 446 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
266 {
267 source.dest = (yyvsp[(1) - (3)].number);
268@@ -2186,5 +2191,5 @@
269
270 case 11:
271-#line 447 "/usr/homes/chet/src/bash/src/parse.y"
272+#line 452 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
273 {
274 source.dest = (yyvsp[(1) - (3)].number);
275@@ -2195,5 +2200,5 @@
276
277 case 12:
278-#line 453 "/usr/homes/chet/src/bash/src/parse.y"
279+#line 458 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
280 {
281 source.filename = (yyvsp[(1) - (3)].word);
282@@ -2204,5 +2209,5 @@
283
284 case 13:
285-#line 459 "/usr/homes/chet/src/bash/src/parse.y"
286+#line 464 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
287 {
288 source.filename = (yyvsp[(1) - (3)].word);
289@@ -2213,5 +2218,5 @@
290
291 case 14:
292-#line 465 "/usr/homes/chet/src/bash/src/parse.y"
293+#line 470 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
294 {
295 source.dest = 1;
296@@ -2222,5 +2227,5 @@
297
298 case 15:
299-#line 471 "/usr/homes/chet/src/bash/src/parse.y"
300+#line 476 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
301 {
302 source.dest = (yyvsp[(1) - (3)].number);
303@@ -2231,5 +2236,5 @@
304
305 case 16:
306-#line 477 "/usr/homes/chet/src/bash/src/parse.y"
307+#line 482 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
308 {
309 source.filename = (yyvsp[(1) - (3)].word);
310@@ -2240,5 +2245,5 @@
311
312 case 17:
313-#line 483 "/usr/homes/chet/src/bash/src/parse.y"
314+#line 488 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
315 {
316 source.dest = 1;
317@@ -2249,5 +2254,5 @@
318
319 case 18:
320-#line 489 "/usr/homes/chet/src/bash/src/parse.y"
321+#line 494 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
322 {
323 source.dest = (yyvsp[(1) - (3)].number);
324@@ -2258,5 +2263,5 @@
325
326 case 19:
327-#line 495 "/usr/homes/chet/src/bash/src/parse.y"
328+#line 500 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
329 {
330 source.filename = (yyvsp[(1) - (3)].word);
331@@ -2267,5 +2272,5 @@
332
333 case 20:
334-#line 501 "/usr/homes/chet/src/bash/src/parse.y"
335+#line 506 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
336 {
337 source.dest = 0;
338@@ -2276,5 +2281,5 @@
339
340 case 21:
341-#line 507 "/usr/homes/chet/src/bash/src/parse.y"
342+#line 512 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
343 {
344 source.dest = (yyvsp[(1) - (3)].number);
345@@ -2285,5 +2290,5 @@
346
347 case 22:
348-#line 513 "/usr/homes/chet/src/bash/src/parse.y"
349+#line 518 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
350 {
351 source.filename = (yyvsp[(1) - (3)].word);
352@@ -2294,65 +2299,65 @@
353
354 case 23:
355-#line 519 "/usr/homes/chet/src/bash/src/parse.y"
356+#line 524 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
357 {
358 source.dest = 0;
359 redir.filename = (yyvsp[(2) - (2)].word);
360 (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
361- redir_stack[need_here_doc++] = (yyval.redirect);
362+ push_heredoc ((yyval.redirect));
363 }
364 break;
365
366 case 24:
367-#line 526 "/usr/homes/chet/src/bash/src/parse.y"
368+#line 531 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
369 {
370 source.dest = (yyvsp[(1) - (3)].number);
371 redir.filename = (yyvsp[(3) - (3)].word);
372 (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
373- redir_stack[need_here_doc++] = (yyval.redirect);
374+ push_heredoc ((yyval.redirect));
375 }
376 break;
377
378 case 25:
379-#line 533 "/usr/homes/chet/src/bash/src/parse.y"
380+#line 538 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
381 {
382 source.filename = (yyvsp[(1) - (3)].word);
383 redir.filename = (yyvsp[(3) - (3)].word);
384 (yyval.redirect) = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
385- redir_stack[need_here_doc++] = (yyval.redirect);
386+ push_heredoc ((yyval.redirect));
387 }
388 break;
389
390 case 26:
391-#line 540 "/usr/homes/chet/src/bash/src/parse.y"
392+#line 545 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
393 {
394 source.dest = 0;
395 redir.filename = (yyvsp[(2) - (2)].word);
396 (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
397- redir_stack[need_here_doc++] = (yyval.redirect);
398+ push_heredoc ((yyval.redirect));
399 }
400 break;
401
402 case 27:
403-#line 547 "/usr/homes/chet/src/bash/src/parse.y"
404+#line 552 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
405 {
406 source.dest = (yyvsp[(1) - (3)].number);
407 redir.filename = (yyvsp[(3) - (3)].word);
408 (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
409- redir_stack[need_here_doc++] = (yyval.redirect);
410+ push_heredoc ((yyval.redirect));
411 }
412 break;
413
414 case 28:
415-#line 554 "/usr/homes/chet/src/bash/src/parse.y"
416+#line 559 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
417 {
418 source.filename = (yyvsp[(1) - (3)].word);
419 redir.filename = (yyvsp[(3) - (3)].word);
420 (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
421- redir_stack[need_here_doc++] = (yyval.redirect);
422+ push_heredoc ((yyval.redirect));
423 }
424 break;
425
426 case 29:
427-#line 561 "/usr/homes/chet/src/bash/src/parse.y"
428+#line 566 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
429 {
430 source.dest = 0;
431@@ -2363,5 +2368,5 @@
432
433 case 30:
434-#line 567 "/usr/homes/chet/src/bash/src/parse.y"
435+#line 572 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
436 {
437 source.dest = (yyvsp[(1) - (3)].number);
438@@ -2372,5 +2377,5 @@
439
440 case 31:
441-#line 573 "/usr/homes/chet/src/bash/src/parse.y"
442+#line 578 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
443 {
444 source.filename = (yyvsp[(1) - (3)].word);
445@@ -2381,5 +2386,5 @@
446
447 case 32:
448-#line 579 "/usr/homes/chet/src/bash/src/parse.y"
449+#line 584 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
450 {
451 source.dest = 0;
452@@ -2390,5 +2395,5 @@
453
454 case 33:
455-#line 585 "/usr/homes/chet/src/bash/src/parse.y"
456+#line 590 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
457 {
458 source.dest = (yyvsp[(1) - (3)].number);
459@@ -2399,5 +2404,5 @@
460
461 case 34:
462-#line 591 "/usr/homes/chet/src/bash/src/parse.y"
463+#line 596 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
464 {
465 source.filename = (yyvsp[(1) - (3)].word);
466@@ -2408,5 +2413,5 @@
467
468 case 35:
469-#line 597 "/usr/homes/chet/src/bash/src/parse.y"
470+#line 602 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
471 {
472 source.dest = 1;
473@@ -2417,5 +2422,5 @@
474
475 case 36:
476-#line 603 "/usr/homes/chet/src/bash/src/parse.y"
477+#line 608 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
478 {
479 source.dest = (yyvsp[(1) - (3)].number);
480@@ -2426,5 +2431,5 @@
481
482 case 37:
483-#line 609 "/usr/homes/chet/src/bash/src/parse.y"
484+#line 614 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
485 {
486 source.filename = (yyvsp[(1) - (3)].word);
487@@ -2435,5 +2440,5 @@
488
489 case 38:
490-#line 615 "/usr/homes/chet/src/bash/src/parse.y"
491+#line 620 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
492 {
493 source.dest = 0;
494@@ -2444,5 +2449,5 @@
495
496 case 39:
497-#line 621 "/usr/homes/chet/src/bash/src/parse.y"
498+#line 626 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
499 {
500 source.dest = (yyvsp[(1) - (3)].number);
501@@ -2453,5 +2458,5 @@
502
503 case 40:
504-#line 627 "/usr/homes/chet/src/bash/src/parse.y"
505+#line 632 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
506 {
507 source.filename = (yyvsp[(1) - (3)].word);
508@@ -2462,5 +2467,5 @@
509
510 case 41:
511-#line 633 "/usr/homes/chet/src/bash/src/parse.y"
512+#line 638 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
513 {
514 source.dest = 1;
515@@ -2471,5 +2476,5 @@
516
517 case 42:
518-#line 639 "/usr/homes/chet/src/bash/src/parse.y"
519+#line 644 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
520 {
521 source.dest = (yyvsp[(1) - (3)].number);
522@@ -2480,5 +2485,5 @@
523
524 case 43:
525-#line 645 "/usr/homes/chet/src/bash/src/parse.y"
526+#line 650 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
527 {
528 source.filename = (yyvsp[(1) - (3)].word);
529@@ -2489,5 +2494,5 @@
530
531 case 44:
532-#line 651 "/usr/homes/chet/src/bash/src/parse.y"
533+#line 656 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
534 {
535 source.dest = 1;
536@@ -2498,5 +2503,5 @@
537
538 case 45:
539-#line 657 "/usr/homes/chet/src/bash/src/parse.y"
540+#line 662 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
541 {
542 source.dest = (yyvsp[(1) - (3)].number);
543@@ -2507,5 +2512,5 @@
544
545 case 46:
546-#line 663 "/usr/homes/chet/src/bash/src/parse.y"
547+#line 668 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
548 {
549 source.filename = (yyvsp[(1) - (3)].word);
550@@ -2516,5 +2521,5 @@
551
552 case 47:
553-#line 669 "/usr/homes/chet/src/bash/src/parse.y"
554+#line 674 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
555 {
556 source.dest = 0;
557@@ -2525,5 +2530,5 @@
558
559 case 48:
560-#line 675 "/usr/homes/chet/src/bash/src/parse.y"
561+#line 680 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
562 {
563 source.dest = (yyvsp[(1) - (3)].number);
564@@ -2534,5 +2539,5 @@
565
566 case 49:
567-#line 681 "/usr/homes/chet/src/bash/src/parse.y"
568+#line 686 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
569 {
570 source.filename = (yyvsp[(1) - (3)].word);
571@@ -2543,5 +2548,5 @@
572
573 case 50:
574-#line 687 "/usr/homes/chet/src/bash/src/parse.y"
575+#line 692 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
576 {
577 source.dest = 1;
578@@ -2552,5 +2557,5 @@
579
580 case 51:
581-#line 693 "/usr/homes/chet/src/bash/src/parse.y"
582+#line 698 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
583 {
584 source.dest = 1;
585@@ -2561,20 +2566,20 @@
586
587 case 52:
588-#line 701 "/usr/homes/chet/src/bash/src/parse.y"
589+#line 706 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
590 { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
591 break;
592
593 case 53:
594-#line 703 "/usr/homes/chet/src/bash/src/parse.y"
595+#line 708 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
596 { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; }
597 break;
598
599 case 54:
600-#line 705 "/usr/homes/chet/src/bash/src/parse.y"
601+#line 710 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
602 { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect); (yyval.element).word = 0; }
603 break;
604
605 case 55:
606-#line 709 "/usr/homes/chet/src/bash/src/parse.y"
607+#line 714 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
608 {
609 (yyval.redirect) = (yyvsp[(1) - (1)].redirect);
610@@ -2583,5 +2588,5 @@
611
612 case 56:
613-#line 713 "/usr/homes/chet/src/bash/src/parse.y"
614+#line 718 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
615 {
616 register REDIRECT *t;
617@@ -2595,25 +2600,25 @@
618
619 case 57:
620-#line 724 "/usr/homes/chet/src/bash/src/parse.y"
621+#line 729 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
622 { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element), (COMMAND *)NULL); }
623 break;
624
625 case 58:
626-#line 726 "/usr/homes/chet/src/bash/src/parse.y"
627+#line 731 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
628 { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element), (yyvsp[(1) - (2)].command)); }
629 break;
630
631 case 59:
632-#line 730 "/usr/homes/chet/src/bash/src/parse.y"
633+#line 735 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
634 { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command)); }
635 break;
636
637 case 60:
638-#line 732 "/usr/homes/chet/src/bash/src/parse.y"
639+#line 737 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
640 { (yyval.command) = (yyvsp[(1) - (1)].command); }
641 break;
642
643 case 61:
644-#line 734 "/usr/homes/chet/src/bash/src/parse.y"
645+#line 739 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
646 {
647 COMMAND *tc;
648@@ -2634,70 +2639,70 @@
649
650 case 62:
651-#line 750 "/usr/homes/chet/src/bash/src/parse.y"
652+#line 755 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
653 { (yyval.command) = (yyvsp[(1) - (1)].command); }
654 break;
655
656 case 63:
657-#line 752 "/usr/homes/chet/src/bash/src/parse.y"
658+#line 757 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
659 { (yyval.command) = (yyvsp[(1) - (1)].command); }
660 break;
661
662 case 64:
663-#line 756 "/usr/homes/chet/src/bash/src/parse.y"
664+#line 761 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
665 { (yyval.command) = (yyvsp[(1) - (1)].command); }
666 break;
667
668 case 65:
669-#line 758 "/usr/homes/chet/src/bash/src/parse.y"
670+#line 763 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
671 { (yyval.command) = (yyvsp[(1) - (1)].command); }
672 break;
673
674 case 66:
675-#line 760 "/usr/homes/chet/src/bash/src/parse.y"
676+#line 765 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
677 { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
678 break;
679
680 case 67:
681-#line 762 "/usr/homes/chet/src/bash/src/parse.y"
682+#line 767 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
683 { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); }
684 break;
685
686 case 68:
687-#line 764 "/usr/homes/chet/src/bash/src/parse.y"
688+#line 769 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
689 { (yyval.command) = (yyvsp[(1) - (1)].command); }
690 break;
691
692 case 69:
693-#line 766 "/usr/homes/chet/src/bash/src/parse.y"
694+#line 771 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
695 { (yyval.command) = (yyvsp[(1) - (1)].command); }
696 break;
697
698 case 70:
699-#line 768 "/usr/homes/chet/src/bash/src/parse.y"
700+#line 773 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
701 { (yyval.command) = (yyvsp[(1) - (1)].command); }
702 break;
703
704 case 71:
705-#line 770 "/usr/homes/chet/src/bash/src/parse.y"
706+#line 775 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
707 { (yyval.command) = (yyvsp[(1) - (1)].command); }
708 break;
709
710 case 72:
711-#line 772 "/usr/homes/chet/src/bash/src/parse.y"
712+#line 777 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
713 { (yyval.command) = (yyvsp[(1) - (1)].command); }
714 break;
715
716 case 73:
717-#line 774 "/usr/homes/chet/src/bash/src/parse.y"
718+#line 779 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
719 { (yyval.command) = (yyvsp[(1) - (1)].command); }
720 break;
721
722 case 74:
723-#line 776 "/usr/homes/chet/src/bash/src/parse.y"
724+#line 781 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
725 { (yyval.command) = (yyvsp[(1) - (1)].command); }
726 break;
727
728 case 75:
729-#line 780 "/usr/homes/chet/src/bash/src/parse.y"
730+#line 785 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
731 {
732 (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
733@@ -2707,5 +2712,5 @@
734
735 case 76:
736-#line 785 "/usr/homes/chet/src/bash/src/parse.y"
737+#line 790 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
738 {
739 (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
740@@ -2715,5 +2720,5 @@
741
742 case 77:
743-#line 790 "/usr/homes/chet/src/bash/src/parse.y"
744+#line 795 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
745 {
746 (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
747@@ -2723,5 +2728,5 @@
748
749 case 78:
750-#line 795 "/usr/homes/chet/src/bash/src/parse.y"
751+#line 800 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
752 {
753 (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
754@@ -2731,5 +2736,5 @@
755
756 case 79:
757-#line 800 "/usr/homes/chet/src/bash/src/parse.y"
758+#line 805 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
759 {
760 (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
761@@ -2739,5 +2744,5 @@
762
763 case 80:
764-#line 805 "/usr/homes/chet/src/bash/src/parse.y"
765+#line 810 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
766 {
767 (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
768@@ -2747,5 +2752,5 @@
769
770 case 81:
771-#line 810 "/usr/homes/chet/src/bash/src/parse.y"
772+#line 815 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
773 {
774 (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
775@@ -2755,5 +2760,5 @@
776
777 case 82:
778-#line 815 "/usr/homes/chet/src/bash/src/parse.y"
779+#line 820 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
780 {
781 (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]);
782@@ -2763,5 +2768,5 @@
783
784 case 83:
785-#line 822 "/usr/homes/chet/src/bash/src/parse.y"
786+#line 827 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
787 {
788 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
789@@ -2771,5 +2776,5 @@
790
791 case 84:
792-#line 827 "/usr/homes/chet/src/bash/src/parse.y"
793+#line 832 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
794 {
795 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno);
796@@ -2779,5 +2784,5 @@
797
798 case 85:
799-#line 832 "/usr/homes/chet/src/bash/src/parse.y"
800+#line 837 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
801 {
802 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
803@@ -2787,5 +2792,5 @@
804
805 case 86:
806-#line 837 "/usr/homes/chet/src/bash/src/parse.y"
807+#line 842 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
808 {
809 (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno);
810@@ -2795,5 +2800,5 @@
811
812 case 87:
813-#line 844 "/usr/homes/chet/src/bash/src/parse.y"
814+#line 849 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
815 {
816 (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
817@@ -2803,5 +2808,5 @@
818
819 case 88:
820-#line 849 "/usr/homes/chet/src/bash/src/parse.y"
821+#line 854 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
822 {
823 (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]);
824@@ -2811,5 +2816,5 @@
825
826 case 89:
827-#line 854 "/usr/homes/chet/src/bash/src/parse.y"
828+#line 859 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
829 {
830 (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
831@@ -2819,5 +2824,5 @@
832
833 case 90:
834-#line 859 "/usr/homes/chet/src/bash/src/parse.y"
835+#line 864 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
836 {
837 (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]);
838@@ -2827,5 +2832,5 @@
839
840 case 91:
841-#line 864 "/usr/homes/chet/src/bash/src/parse.y"
842+#line 869 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
843 {
844 (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
845@@ -2835,5 +2840,5 @@
846
847 case 92:
848-#line 869 "/usr/homes/chet/src/bash/src/parse.y"
849+#line 874 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
850 {
851 (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]);
852@@ -2843,5 +2848,5 @@
853
854 case 93:
855-#line 876 "/usr/homes/chet/src/bash/src/parse.y"
856+#line 881 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
857 {
858 (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
859@@ -2851,5 +2856,5 @@
860
861 case 94:
862-#line 881 "/usr/homes/chet/src/bash/src/parse.y"
863+#line 886 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
864 {
865 (yyval.command) = make_case_command ((yyvsp[(2) - (7)].word), (yyvsp[(5) - (7)].pattern), word_lineno[word_top]);
866@@ -2859,5 +2864,5 @@
867
868 case 95:
869-#line 886 "/usr/homes/chet/src/bash/src/parse.y"
870+#line 891 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
871 {
872 (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]);
873@@ -2867,25 +2872,25 @@
874
875 case 96:
876-#line 893 "/usr/homes/chet/src/bash/src/parse.y"
877+#line 898 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
878 { (yyval.command) = make_function_def ((yyvsp[(1) - (5)].word), (yyvsp[(5) - (5)].command), function_dstart, function_bstart); }
879 break;
880
881 case 97:
882-#line 896 "/usr/homes/chet/src/bash/src/parse.y"
883+#line 901 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
884 { (yyval.command) = make_function_def ((yyvsp[(2) - (6)].word), (yyvsp[(6) - (6)].command), function_dstart, function_bstart); }
885 break;
886
887 case 98:
888-#line 899 "/usr/homes/chet/src/bash/src/parse.y"
889+#line 904 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
890 { (yyval.command) = make_function_def ((yyvsp[(2) - (4)].word), (yyvsp[(4) - (4)].command), function_dstart, function_bstart); }
891 break;
892
893 case 99:
894-#line 903 "/usr/homes/chet/src/bash/src/parse.y"
895+#line 908 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
896 { (yyval.command) = (yyvsp[(1) - (1)].command); }
897 break;
898
899 case 100:
900-#line 905 "/usr/homes/chet/src/bash/src/parse.y"
901+#line 910 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
902 {
903 COMMAND *tc;
904@@ -2919,5 +2924,5 @@
905
906 case 101:
907-#line 936 "/usr/homes/chet/src/bash/src/parse.y"
908+#line 941 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
909 {
910 (yyval.command) = make_subshell_command ((yyvsp[(2) - (3)].command));
911@@ -2927,5 +2932,5 @@
912
913 case 102:
914-#line 943 "/usr/homes/chet/src/bash/src/parse.y"
915+#line 948 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
916 {
917 (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (2)].command));
918@@ -2935,5 +2940,5 @@
919
920 case 103:
921-#line 948 "/usr/homes/chet/src/bash/src/parse.y"
922+#line 953 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
923 {
924 COMMAND *tc;
925@@ -2955,5 +2960,5 @@
926
927 case 104:
928-#line 965 "/usr/homes/chet/src/bash/src/parse.y"
929+#line 970 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
930 {
931 (yyval.command) = make_coproc_command ((yyvsp[(2) - (3)].word)->word, (yyvsp[(3) - (3)].command));
932@@ -2963,5 +2968,5 @@
933
934 case 105:
935-#line 970 "/usr/homes/chet/src/bash/src/parse.y"
936+#line 975 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
937 {
938 COMMAND *tc;
939@@ -2983,5 +2988,5 @@
940
941 case 106:
942-#line 987 "/usr/homes/chet/src/bash/src/parse.y"
943+#line 992 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
944 {
945 (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[(2) - (2)].command)));
946@@ -2991,115 +2996,115 @@
947
948 case 107:
949-#line 994 "/usr/homes/chet/src/bash/src/parse.y"
950+#line 999 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
951 { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (COMMAND *)NULL); }
952 break;
953
954 case 108:
955-#line 996 "/usr/homes/chet/src/bash/src/parse.y"
956+#line 1001 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
957 { (yyval.command) = make_if_command ((yyvsp[(2) - (7)].command), (yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); }
958 break;
959
960 case 109:
961-#line 998 "/usr/homes/chet/src/bash/src/parse.y"
962+#line 1003 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
963 { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); }
964 break;
965
966 case 110:
967-#line 1003 "/usr/homes/chet/src/bash/src/parse.y"
968+#line 1008 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
969 { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); }
970 break;
971
972 case 111:
973-#line 1007 "/usr/homes/chet/src/bash/src/parse.y"
974+#line 1012 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
975 { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list)); }
976 break;
977
978 case 112:
979-#line 1011 "/usr/homes/chet/src/bash/src/parse.y"
980+#line 1016 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
981 { (yyval.command) = (yyvsp[(2) - (3)].command); }
982 break;
983
984 case 113:
985-#line 1015 "/usr/homes/chet/src/bash/src/parse.y"
986+#line 1020 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
987 { (yyval.command) = make_if_command ((yyvsp[(2) - (4)].command), (yyvsp[(4) - (4)].command), (COMMAND *)NULL); }
988 break;
989
990 case 114:
991-#line 1017 "/usr/homes/chet/src/bash/src/parse.y"
992+#line 1022 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
993 { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); }
994 break;
995
996 case 115:
997-#line 1019 "/usr/homes/chet/src/bash/src/parse.y"
998+#line 1024 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
999 { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); }
1000 break;
1001
1002 case 117:
1003-#line 1024 "/usr/homes/chet/src/bash/src/parse.y"
1004+#line 1029 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1005 { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern); (yyval.pattern) = (yyvsp[(2) - (2)].pattern); }
1006 break;
1007
1008 case 118:
1009-#line 1028 "/usr/homes/chet/src/bash/src/parse.y"
1010+#line 1033 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1011 { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (yyvsp[(4) - (4)].command)); }
1012 break;
1013
1014 case 119:
1015-#line 1030 "/usr/homes/chet/src/bash/src/parse.y"
1016+#line 1035 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1017 { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (COMMAND *)NULL); }
1018 break;
1019
1020 case 120:
1021-#line 1032 "/usr/homes/chet/src/bash/src/parse.y"
1022+#line 1037 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1023 { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (yyvsp[(5) - (5)].command)); }
1024 break;
1025
1026 case 121:
1027-#line 1034 "/usr/homes/chet/src/bash/src/parse.y"
1028+#line 1039 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1029 { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (COMMAND *)NULL); }
1030 break;
1031
1032 case 122:
1033-#line 1038 "/usr/homes/chet/src/bash/src/parse.y"
1034+#line 1043 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1035 { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
1036 break;
1037
1038 case 123:
1039-#line 1040 "/usr/homes/chet/src/bash/src/parse.y"
1040+#line 1045 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1041 { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
1042 break;
1043
1044 case 124:
1045-#line 1042 "/usr/homes/chet/src/bash/src/parse.y"
1046+#line 1047 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1047 { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
1048 break;
1049
1050 case 125:
1051-#line 1044 "/usr/homes/chet/src/bash/src/parse.y"
1052+#line 1049 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1053 { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
1054 break;
1055
1056 case 126:
1057-#line 1046 "/usr/homes/chet/src/bash/src/parse.y"
1058+#line 1051 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1059 { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); }
1060 break;
1061
1062 case 127:
1063-#line 1048 "/usr/homes/chet/src/bash/src/parse.y"
1064+#line 1053 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1065 { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); }
1066 break;
1067
1068 case 128:
1069-#line 1052 "/usr/homes/chet/src/bash/src/parse.y"
1070+#line 1057 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1071 { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); }
1072 break;
1073
1074 case 129:
1075-#line 1054 "/usr/homes/chet/src/bash/src/parse.y"
1076+#line 1059 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1077 { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word), (yyvsp[(1) - (3)].word_list)); }
1078 break;
1079
1080 case 130:
1081-#line 1063 "/usr/homes/chet/src/bash/src/parse.y"
1082+#line 1068 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1083 {
1084 (yyval.command) = (yyvsp[(2) - (2)].command);
1085@@ -3110,5 +3115,5 @@
1086
1087 case 132:
1088-#line 1072 "/usr/homes/chet/src/bash/src/parse.y"
1089+#line 1077 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1090 {
1091 (yyval.command) = (yyvsp[(2) - (2)].command);
1092@@ -3117,5 +3122,5 @@
1093
1094 case 134:
1095-#line 1079 "/usr/homes/chet/src/bash/src/parse.y"
1096+#line 1084 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1097 {
1098 if ((yyvsp[(1) - (3)].command)->type == cm_connection)
1099@@ -3127,15 +3132,15 @@
1100
1101 case 136:
1102-#line 1090 "/usr/homes/chet/src/bash/src/parse.y"
1103+#line 1095 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1104 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
1105 break;
1106
1107 case 137:
1108-#line 1092 "/usr/homes/chet/src/bash/src/parse.y"
1109+#line 1097 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1110 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
1111 break;
1112
1113 case 138:
1114-#line 1094 "/usr/homes/chet/src/bash/src/parse.y"
1115+#line 1099 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1116 {
1117 if ((yyvsp[(1) - (4)].command)->type == cm_connection)
1118@@ -3147,35 +3152,35 @@
1119
1120 case 139:
1121-#line 1101 "/usr/homes/chet/src/bash/src/parse.y"
1122+#line 1106 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1123 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
1124 break;
1125
1126 case 140:
1127-#line 1103 "/usr/homes/chet/src/bash/src/parse.y"
1128+#line 1108 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1129 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); }
1130 break;
1131
1132 case 141:
1133-#line 1105 "/usr/homes/chet/src/bash/src/parse.y"
1134+#line 1110 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1135 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1136 break;
1137
1138 case 144:
1139-#line 1113 "/usr/homes/chet/src/bash/src/parse.y"
1140+#line 1118 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1141 { (yyval.number) = '\n'; }
1142 break;
1143
1144 case 145:
1145-#line 1115 "/usr/homes/chet/src/bash/src/parse.y"
1146+#line 1120 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1147 { (yyval.number) = ';'; }
1148 break;
1149
1150 case 146:
1151-#line 1117 "/usr/homes/chet/src/bash/src/parse.y"
1152+#line 1122 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1153 { (yyval.number) = yacc_EOF; }
1154 break;
1155
1156 case 149:
1157-#line 1131 "/usr/homes/chet/src/bash/src/parse.y"
1158+#line 1136 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1159 {
1160 (yyval.command) = (yyvsp[(1) - (1)].command);
1161@@ -3193,5 +3198,5 @@
1162
1163 case 150:
1164-#line 1144 "/usr/homes/chet/src/bash/src/parse.y"
1165+#line 1149 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1166 {
1167 if ((yyvsp[(1) - (2)].command)->type == cm_connection)
1168@@ -3212,5 +3217,5 @@
1169
1170 case 151:
1171-#line 1160 "/usr/homes/chet/src/bash/src/parse.y"
1172+#line 1165 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1173 {
1174 (yyval.command) = (yyvsp[(1) - (2)].command);
1175@@ -3228,15 +3233,15 @@
1176
1177 case 152:
1178-#line 1175 "/usr/homes/chet/src/bash/src/parse.y"
1179+#line 1180 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1180 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); }
1181 break;
1182
1183 case 153:
1184-#line 1177 "/usr/homes/chet/src/bash/src/parse.y"
1185+#line 1182 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1186 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); }
1187 break;
1188
1189 case 154:
1190-#line 1179 "/usr/homes/chet/src/bash/src/parse.y"
1191+#line 1184 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1192 {
1193 if ((yyvsp[(1) - (3)].command)->type == cm_connection)
1194@@ -3248,20 +3253,20 @@
1195
1196 case 155:
1197-#line 1186 "/usr/homes/chet/src/bash/src/parse.y"
1198+#line 1191 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1199 { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), ';'); }
1200 break;
1201
1202 case 156:
1203-#line 1189 "/usr/homes/chet/src/bash/src/parse.y"
1204+#line 1194 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1205 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1206 break;
1207
1208 case 157:
1209-#line 1193 "/usr/homes/chet/src/bash/src/parse.y"
1210+#line 1198 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1211 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1212 break;
1213
1214 case 158:
1215-#line 1195 "/usr/homes/chet/src/bash/src/parse.y"
1216+#line 1200 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1217 {
1218 if ((yyvsp[(2) - (2)].command))
1219@@ -3272,5 +3277,5 @@
1220
1221 case 159:
1222-#line 1201 "/usr/homes/chet/src/bash/src/parse.y"
1223+#line 1206 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1224 {
1225 if ((yyvsp[(2) - (2)].command))
1226@@ -3281,5 +3286,5 @@
1227
1228 case 160:
1229-#line 1207 "/usr/homes/chet/src/bash/src/parse.y"
1230+#line 1212 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1231 {
1232 ELEMENT x;
1233@@ -3301,5 +3306,5 @@
1234
1235 case 161:
1236-#line 1224 "/usr/homes/chet/src/bash/src/parse.y"
1237+#line 1229 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1238 {
1239 ELEMENT x;
1240@@ -3322,10 +3327,10 @@
1241
1242 case 162:
1243-#line 1244 "/usr/homes/chet/src/bash/src/parse.y"
1244+#line 1249 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1245 { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '|'); }
1246 break;
1247
1248 case 163:
1249-#line 1246 "/usr/homes/chet/src/bash/src/parse.y"
1250+#line 1251 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1251 {
1252 /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */
1253@@ -3353,20 +3358,20 @@
1254
1255 case 164:
1256-#line 1269 "/usr/homes/chet/src/bash/src/parse.y"
1257+#line 1274 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1258 { (yyval.command) = (yyvsp[(1) - (1)].command); }
1259 break;
1260
1261 case 165:
1262-#line 1273 "/usr/homes/chet/src/bash/src/parse.y"
1263+#line 1278 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1264 { (yyval.number) = CMD_TIME_PIPELINE; }
1265 break;
1266
1267 case 166:
1268-#line 1275 "/usr/homes/chet/src/bash/src/parse.y"
1269+#line 1280 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1270 { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
1271 break;
1272
1273 case 167:
1274-#line 1277 "/usr/homes/chet/src/bash/src/parse.y"
1275+#line 1282 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1276 { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
1277 break;
1278@@ -3374,5 +3379,5 @@
1279
1280 /* Line 1267 of yacc.c. */
1281-#line 3377 "y.tab.c"
1282+#line 3382 "y.tab.c"
1283 default: break;
1284 }
1285@@ -3588,5 +3593,5 @@
1286
1287
1288-#line 1279 "/usr/homes/chet/src/bash/src/parse.y"
1289+#line 1284 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y"
1290
1291
1292@@ -4949,4 +4954,19 @@
1293 static int esacs_needed_count;
1294
1295+static void
1296+push_heredoc (r)
1297+ REDIRECT *r;
1298+{
1299+ if (need_here_doc >= HEREDOC_MAX)
1300+ {
1301+ last_command_exit_value = EX_BADUSAGE;
1302+ need_here_doc = 0;
1303+ report_syntax_error (_("maximum here-document count exceeded"));
1304+ reset_parser ();
1305+ exit_shell (last_command_exit_value);
1306+ }
1307+ redir_stack[need_here_doc++] = r;
1308+}
1309+
1310 void
1311 gather_here_documents ()
1312@@ -8542,2 +8562,3 @@
1313 }
1314 #endif /* HANDLE_MULTIBYTE */
1315+
diff --git a/meta/recipes-extended/bash/bash_3.2.48.bb b/meta/recipes-extended/bash/bash_3.2.48.bb
index a5417f19cc..2b26ae75c2 100644
--- a/meta/recipes-extended/bash/bash_3.2.48.bb
+++ b/meta/recipes-extended/bash/bash_3.2.48.bb
@@ -15,6 +15,7 @@ SRC_URI = "${GNU_MIRROR}/bash/bash-${PV}.tar.gz;name=tarball \
15 file://cve-2014-6271.patch;striplevel=0 \ 15 file://cve-2014-6271.patch;striplevel=0 \
16 file://cve-2014-7169.patch \ 16 file://cve-2014-7169.patch \
17 file://Fix-for-bash-exported-function-namespace-change.patch \ 17 file://Fix-for-bash-exported-function-namespace-change.patch \
18 file://cve-2014-7186_cve-2014-7187.patch \
18 file://run-ptest \ 19 file://run-ptest \
19 " 20 "
20 21
diff --git a/meta/recipes-extended/bash/bash_4.3.bb b/meta/recipes-extended/bash/bash_4.3.bb
index 1130c751be..d7bfb98660 100644
--- a/meta/recipes-extended/bash/bash_4.3.bb
+++ b/meta/recipes-extended/bash/bash_4.3.bb
@@ -12,6 +12,7 @@ SRC_URI = "${GNU_MIRROR}/bash/${BPN}-${PV}.tar.gz;name=tarball \
12 file://cve-2014-6271.patch;striplevel=0 \ 12 file://cve-2014-6271.patch;striplevel=0 \
13 file://cve-2014-7169.patch \ 13 file://cve-2014-7169.patch \
14 file://Fix-for-bash-exported-function-namespace-change.patch \ 14 file://Fix-for-bash-exported-function-namespace-change.patch \
15 file://cve-2014-7186_cve-2014-7187.patch \
15 file://run-ptest \ 16 file://run-ptest \
16 " 17 "
17 18