- Added bash32-018 upstream official patch
- Added bash32-020 upstream official patch - Added bash32-019 upstream official patch
This commit is contained in:
parent
5fd85c30cd
commit
3797fbd1a8
13
bash.spec
13
bash.spec
@ -1,7 +1,7 @@
|
|||||||
Version: 3.2
|
Version: 3.2
|
||||||
Name: bash
|
Name: bash
|
||||||
Summary: The GNU Bourne Again shell (bash) version %{version}
|
Summary: The GNU Bourne Again shell (bash) version %{version}
|
||||||
Release: 16%{?dist}
|
Release: 17%{?dist}
|
||||||
Group: System Environment/Shells
|
Group: System Environment/Shells
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
Url: http://www.gnu.org/software/bash
|
Url: http://www.gnu.org/software/bash
|
||||||
@ -28,6 +28,9 @@ Patch14: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-014
|
|||||||
Patch15: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-015
|
Patch15: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-015
|
||||||
Patch16: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-016
|
Patch16: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-016
|
||||||
Patch17: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-017
|
Patch17: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-017
|
||||||
|
Patch18: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-018
|
||||||
|
Patch19: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-019
|
||||||
|
Patch20: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-020
|
||||||
# Other patches
|
# Other patches
|
||||||
Patch100: bash-2.03-paths.patch
|
Patch100: bash-2.03-paths.patch
|
||||||
Patch101: bash-2.02-security.patch
|
Patch101: bash-2.02-security.patch
|
||||||
@ -81,6 +84,9 @@ compliance over previous versions.
|
|||||||
%patch15 -p0 -b .015
|
%patch15 -p0 -b .015
|
||||||
%patch16 -p0 -b .016
|
%patch16 -p0 -b .016
|
||||||
%patch17 -p0 -b .017
|
%patch17 -p0 -b .017
|
||||||
|
%patch18 -p0 -b .018
|
||||||
|
%patch19 -p0 -b .019
|
||||||
|
%patch20 -p0 -b .020
|
||||||
|
|
||||||
# Other patches
|
# Other patches
|
||||||
%patch100 -p1 -b .paths
|
%patch100 -p1 -b .paths
|
||||||
@ -240,6 +246,11 @@ fi
|
|||||||
%doc doc/*.ps doc/*.0 doc/*.html doc/article.txt
|
%doc doc/*.ps doc/*.0 doc/*.html doc/article.txt
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Aug 29 2007 Pete Graner <pgraner@redhat.com> - 3.2-17
|
||||||
|
- Added bash32-018 upstream official patch
|
||||||
|
- Added bash32-020 upstream official patch
|
||||||
|
- Added bash32-019 upstream official patch
|
||||||
|
|
||||||
* Thu Aug 23 2007 Pete Graner <pgraner@redhat.com> - 3.2-16
|
* Thu Aug 23 2007 Pete Graner <pgraner@redhat.com> - 3.2-16
|
||||||
- Rebuild
|
- Rebuild
|
||||||
|
|
||||||
|
98
bash32-018
Normal file
98
bash32-018
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
BASH PATCH REPORT
|
||||||
|
=================
|
||||||
|
|
||||||
|
Bash-Release: 3.2
|
||||||
|
Patch-ID: bash32-018
|
||||||
|
|
||||||
|
Bug-Reported-by: osicka@post.cz
|
||||||
|
Bug-Reference-ID: <228.177-19682-1132061412-1179356692@post.cz>
|
||||||
|
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-05/msg00061.html
|
||||||
|
|
||||||
|
Bug-Description:
|
||||||
|
|
||||||
|
In certain cases, bash can lose the saved status of a background job, though
|
||||||
|
it should still be reported by `wait'. Bash can also loop infinitely after
|
||||||
|
creating and waiting for 4096 jobs.
|
||||||
|
|
||||||
|
Patch:
|
||||||
|
|
||||||
|
*** ../bash-20070510/jobs.c Thu Mar 8 16:05:50 2007
|
||||||
|
--- jobs.c Fri May 18 11:40:14 2007
|
||||||
|
***************
|
||||||
|
*** 784,792 ****
|
||||||
|
{
|
||||||
|
old = js.j_firstj++;
|
||||||
|
while (js.j_firstj != old)
|
||||||
|
{
|
||||||
|
if (js.j_firstj >= js.j_jobslots)
|
||||||
|
js.j_firstj = 0;
|
||||||
|
! if (jobs[js.j_firstj])
|
||||||
|
break;
|
||||||
|
js.j_firstj++;
|
||||||
|
--- 784,794 ----
|
||||||
|
{
|
||||||
|
old = js.j_firstj++;
|
||||||
|
+ if (old >= js.j_jobslots)
|
||||||
|
+ old = js.j_jobslots - 1;
|
||||||
|
while (js.j_firstj != old)
|
||||||
|
{
|
||||||
|
if (js.j_firstj >= js.j_jobslots)
|
||||||
|
js.j_firstj = 0;
|
||||||
|
! if (jobs[js.j_firstj] || js.j_firstj == old) /* needed if old == 0 */
|
||||||
|
break;
|
||||||
|
js.j_firstj++;
|
||||||
|
***************
|
||||||
|
*** 798,806 ****
|
||||||
|
{
|
||||||
|
old = js.j_lastj--;
|
||||||
|
while (js.j_lastj != old)
|
||||||
|
{
|
||||||
|
if (js.j_lastj < 0)
|
||||||
|
js.j_lastj = js.j_jobslots - 1;
|
||||||
|
! if (jobs[js.j_lastj])
|
||||||
|
break;
|
||||||
|
js.j_lastj--;
|
||||||
|
--- 800,810 ----
|
||||||
|
{
|
||||||
|
old = js.j_lastj--;
|
||||||
|
+ if (old < 0)
|
||||||
|
+ old = 0;
|
||||||
|
while (js.j_lastj != old)
|
||||||
|
{
|
||||||
|
if (js.j_lastj < 0)
|
||||||
|
js.j_lastj = js.j_jobslots - 1;
|
||||||
|
! if (jobs[js.j_lastj] || js.j_lastj == old) /* needed if old == js.j_jobslots */
|
||||||
|
break;
|
||||||
|
js.j_lastj--;
|
||||||
|
***************
|
||||||
|
*** 964,968 ****
|
||||||
|
realloc_jobs_list ();
|
||||||
|
|
||||||
|
! return (js.j_lastj);
|
||||||
|
}
|
||||||
|
|
||||||
|
--- 975,983 ----
|
||||||
|
realloc_jobs_list ();
|
||||||
|
|
||||||
|
! #ifdef DEBUG
|
||||||
|
! itrace("compact_jobs_list: returning %d", (js.j_lastj || jobs[js.j_lastj]) ? js.j_lastj + 1 : 0);
|
||||||
|
! #endif
|
||||||
|
!
|
||||||
|
! return ((js.j_lastj || jobs[js.j_lastj]) ? js.j_lastj + 1 : 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
|
||||||
|
--- patchlevel.h Mon Oct 16 14:22:54 2006
|
||||||
|
***************
|
||||||
|
*** 26,30 ****
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 17
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
|
--- 26,30 ----
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 18
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
343
bash32-019
Normal file
343
bash32-019
Normal file
@ -0,0 +1,343 @@
|
|||||||
|
BASH PATCH REPORT
|
||||||
|
=================
|
||||||
|
|
||||||
|
Bash-Release: 3.2
|
||||||
|
Patch-ID: bash32-019
|
||||||
|
|
||||||
|
Bug-Reported-by: Thomas Loeber <ifp@loeber1.de>
|
||||||
|
Bug-Reference-ID: <200703082223.08919.ifp@loeber1.de>
|
||||||
|
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-03/msg00036.html
|
||||||
|
|
||||||
|
Bug-Description:
|
||||||
|
|
||||||
|
When rl_read_key returns -1, indicating that bash's controlling terminal
|
||||||
|
has been invalidated for some reason (e.g., receiving a SIGHUP), the error
|
||||||
|
status was not reported correctly to the caller. This could cause input
|
||||||
|
loops.
|
||||||
|
|
||||||
|
Patch:
|
||||||
|
|
||||||
|
*** ../bash-3.2-patched/lib/readline/complete.c Fri Jul 28 11:35:49 2006
|
||||||
|
--- lib/readline/complete.c Tue Mar 13 08:50:16 2007
|
||||||
|
***************
|
||||||
|
*** 429,433 ****
|
||||||
|
if (c == 'n' || c == 'N' || c == RUBOUT)
|
||||||
|
return (0);
|
||||||
|
! if (c == ABORT_CHAR)
|
||||||
|
_rl_abort_internal ();
|
||||||
|
if (for_pager && (c == NEWLINE || c == RETURN))
|
||||||
|
--- 440,444 ----
|
||||||
|
if (c == 'n' || c == 'N' || c == RUBOUT)
|
||||||
|
return (0);
|
||||||
|
! if (c == ABORT_CHAR || c < 0)
|
||||||
|
_rl_abort_internal ();
|
||||||
|
if (for_pager && (c == NEWLINE || c == RETURN))
|
||||||
|
*** ../bash-3.2-patched/lib/readline/input.c Wed Aug 16 15:15:16 2006
|
||||||
|
--- lib/readline/input.c Wed May 2 16:07:59 2007
|
||||||
|
***************
|
||||||
|
*** 514,518 ****
|
||||||
|
int size;
|
||||||
|
{
|
||||||
|
! int mb_len = 0;
|
||||||
|
size_t mbchar_bytes_length;
|
||||||
|
wchar_t wc;
|
||||||
|
--- 522,526 ----
|
||||||
|
int size;
|
||||||
|
{
|
||||||
|
! int mb_len, c;
|
||||||
|
size_t mbchar_bytes_length;
|
||||||
|
wchar_t wc;
|
||||||
|
***************
|
||||||
|
*** 521,531 ****
|
||||||
|
memset(&ps, 0, sizeof (mbstate_t));
|
||||||
|
memset(&ps_back, 0, sizeof (mbstate_t));
|
||||||
|
!
|
||||||
|
while (mb_len < size)
|
||||||
|
{
|
||||||
|
RL_SETSTATE(RL_STATE_MOREINPUT);
|
||||||
|
! mbchar[mb_len++] = rl_read_key ();
|
||||||
|
RL_UNSETSTATE(RL_STATE_MOREINPUT);
|
||||||
|
|
||||||
|
mbchar_bytes_length = mbrtowc (&wc, mbchar, mb_len, &ps);
|
||||||
|
if (mbchar_bytes_length == (size_t)(-1))
|
||||||
|
--- 529,545 ----
|
||||||
|
memset(&ps, 0, sizeof (mbstate_t));
|
||||||
|
memset(&ps_back, 0, sizeof (mbstate_t));
|
||||||
|
!
|
||||||
|
! mb_len = 0;
|
||||||
|
while (mb_len < size)
|
||||||
|
{
|
||||||
|
RL_SETSTATE(RL_STATE_MOREINPUT);
|
||||||
|
! c = rl_read_key ();
|
||||||
|
RL_UNSETSTATE(RL_STATE_MOREINPUT);
|
||||||
|
|
||||||
|
+ if (c < 0)
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
+ mbchar[mb_len++] = c;
|
||||||
|
+
|
||||||
|
mbchar_bytes_length = mbrtowc (&wc, mbchar, mb_len, &ps);
|
||||||
|
if (mbchar_bytes_length == (size_t)(-1))
|
||||||
|
***************
|
||||||
|
*** 565,569 ****
|
||||||
|
c = first;
|
||||||
|
memset (mb, 0, mlen);
|
||||||
|
! for (i = 0; i < mlen; i++)
|
||||||
|
{
|
||||||
|
mb[i] = (char)c;
|
||||||
|
--- 579,583 ----
|
||||||
|
c = first;
|
||||||
|
memset (mb, 0, mlen);
|
||||||
|
! for (i = 0; c >= 0 && i < mlen; i++)
|
||||||
|
{
|
||||||
|
mb[i] = (char)c;
|
||||||
|
*** ../bash-3.2-patched/lib/readline/isearch.c Mon Dec 26 17:18:53 2005
|
||||||
|
--- lib/readline/isearch.c Fri Mar 9 14:30:59 2007
|
||||||
|
***************
|
||||||
|
*** 328,333 ****
|
||||||
|
|
||||||
|
f = (rl_command_func_t *)NULL;
|
||||||
|
!
|
||||||
|
! /* Translate the keys we do something with to opcodes. */
|
||||||
|
if (c >= 0 && _rl_keymap[c].type == ISFUNC)
|
||||||
|
{
|
||||||
|
--- 328,340 ----
|
||||||
|
|
||||||
|
f = (rl_command_func_t *)NULL;
|
||||||
|
!
|
||||||
|
! if (c < 0)
|
||||||
|
! {
|
||||||
|
! cxt->sflags |= SF_FAILED;
|
||||||
|
! cxt->history_pos = cxt->last_found_line;
|
||||||
|
! return -1;
|
||||||
|
! }
|
||||||
|
!
|
||||||
|
! /* Translate the keys we do something with to opcodes. */
|
||||||
|
if (c >= 0 && _rl_keymap[c].type == ISFUNC)
|
||||||
|
{
|
||||||
|
*** ../bash-3.2-patched/lib/readline/misc.c Mon Dec 26 17:20:46 2005
|
||||||
|
--- lib/readline/misc.c Fri Mar 9 14:44:11 2007
|
||||||
|
***************
|
||||||
|
*** 147,150 ****
|
||||||
|
--- 147,152 ----
|
||||||
|
rl_clear_message ();
|
||||||
|
RL_UNSETSTATE(RL_STATE_NUMERICARG);
|
||||||
|
+ if (key < 0)
|
||||||
|
+ return -1;
|
||||||
|
return (_rl_dispatch (key, _rl_keymap));
|
||||||
|
}
|
||||||
|
*** ../bash-3.2-patched/lib/readline/readline.c Wed Aug 16 15:00:36 2006
|
||||||
|
--- lib/readline/readline.c Fri Mar 9 14:47:24 2007
|
||||||
|
***************
|
||||||
|
*** 646,649 ****
|
||||||
|
--- 669,677 ----
|
||||||
|
{
|
||||||
|
nkey = _rl_subseq_getchar (cxt->okey);
|
||||||
|
+ if (nkey < 0)
|
||||||
|
+ {
|
||||||
|
+ _rl_abort_internal ();
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
r = _rl_dispatch_subseq (nkey, cxt->dmap, cxt->subseq_arg);
|
||||||
|
cxt->flags |= KSEQ_DISPATCHED;
|
||||||
|
*** ../bash-3.2-patched/lib/readline/text.c Fri Jul 28 11:55:27 2006
|
||||||
|
--- lib/readline/text.c Sun Mar 25 13:41:38 2007
|
||||||
|
***************
|
||||||
|
*** 858,861 ****
|
||||||
|
--- 864,870 ----
|
||||||
|
RL_UNSETSTATE(RL_STATE_MOREINPUT);
|
||||||
|
|
||||||
|
+ if (c < 0)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
#if defined (HANDLE_SIGNALS)
|
||||||
|
if (RL_ISSTATE (RL_STATE_CALLBACK) == 0)
|
||||||
|
***************
|
||||||
|
*** 1521,1524 ****
|
||||||
|
--- 1530,1536 ----
|
||||||
|
mb_len = _rl_read_mbchar (mbchar, MB_LEN_MAX);
|
||||||
|
|
||||||
|
+ if (mb_len <= 0)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
if (count < 0)
|
||||||
|
return (_rl_char_search_internal (-count, bdir, mbchar, mb_len));
|
||||||
|
***************
|
||||||
|
*** 1537,1540 ****
|
||||||
|
--- 1549,1555 ----
|
||||||
|
RL_UNSETSTATE(RL_STATE_MOREINPUT);
|
||||||
|
|
||||||
|
+ if (c < 0)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
if (count < 0)
|
||||||
|
return (_rl_char_search_internal (-count, bdir, c));
|
||||||
|
*** ../bash-3.2-patched/lib/readline/vi_mode.c Sat Jul 29 16:42:28 2006
|
||||||
|
--- lib/readline/vi_mode.c Fri Mar 9 15:02:11 2007
|
||||||
|
***************
|
||||||
|
*** 887,890 ****
|
||||||
|
--- 887,897 ----
|
||||||
|
c = rl_read_key ();
|
||||||
|
RL_UNSETSTATE(RL_STATE_MOREINPUT);
|
||||||
|
+
|
||||||
|
+ if (c < 0)
|
||||||
|
+ {
|
||||||
|
+ *nextkey = 0;
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
*nextkey = c;
|
||||||
|
|
||||||
|
***************
|
||||||
|
*** 903,906 ****
|
||||||
|
--- 910,918 ----
|
||||||
|
c = rl_read_key (); /* real command */
|
||||||
|
RL_UNSETSTATE(RL_STATE_MOREINPUT);
|
||||||
|
+ if (c < 0)
|
||||||
|
+ {
|
||||||
|
+ *nextkey = 0;
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
*nextkey = c;
|
||||||
|
}
|
||||||
|
***************
|
||||||
|
*** 1225,1236 ****
|
||||||
|
_rl_callback_generic_arg *data;
|
||||||
|
{
|
||||||
|
#if defined (HANDLE_MULTIBYTE)
|
||||||
|
! _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX);
|
||||||
|
#else
|
||||||
|
RL_SETSTATE(RL_STATE_MOREINPUT);
|
||||||
|
! _rl_vi_last_search_char = rl_read_key ();
|
||||||
|
RL_UNSETSTATE(RL_STATE_MOREINPUT);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
_rl_callback_func = 0;
|
||||||
|
_rl_want_redisplay = 1;
|
||||||
|
--- 1243,1262 ----
|
||||||
|
_rl_callback_generic_arg *data;
|
||||||
|
{
|
||||||
|
+ int c;
|
||||||
|
#if defined (HANDLE_MULTIBYTE)
|
||||||
|
! c = _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX);
|
||||||
|
#else
|
||||||
|
RL_SETSTATE(RL_STATE_MOREINPUT);
|
||||||
|
! c = rl_read_key ();
|
||||||
|
RL_UNSETSTATE(RL_STATE_MOREINPUT);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+ if (c <= 0)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
+ #if !defined (HANDLE_MULTIBYTE)
|
||||||
|
+ _rl_vi_last_search_char = c;
|
||||||
|
+ #endif
|
||||||
|
+
|
||||||
|
_rl_callback_func = 0;
|
||||||
|
_rl_want_redisplay = 1;
|
||||||
|
***************
|
||||||
|
*** 1248,1251 ****
|
||||||
|
--- 1274,1278 ----
|
||||||
|
int count, key;
|
||||||
|
{
|
||||||
|
+ int c;
|
||||||
|
#if defined (HANDLE_MULTIBYTE)
|
||||||
|
static char *target;
|
||||||
|
***************
|
||||||
|
*** 1294,1302 ****
|
||||||
|
{
|
||||||
|
#if defined (HANDLE_MULTIBYTE)
|
||||||
|
! _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX);
|
||||||
|
#else
|
||||||
|
RL_SETSTATE(RL_STATE_MOREINPUT);
|
||||||
|
! _rl_vi_last_search_char = rl_read_key ();
|
||||||
|
RL_UNSETSTATE(RL_STATE_MOREINPUT);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
--- 1321,1335 ----
|
||||||
|
{
|
||||||
|
#if defined (HANDLE_MULTIBYTE)
|
||||||
|
! c = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX);
|
||||||
|
! if (c <= 0)
|
||||||
|
! return -1;
|
||||||
|
! _rl_vi_last_search_mblen = c;
|
||||||
|
#else
|
||||||
|
RL_SETSTATE(RL_STATE_MOREINPUT);
|
||||||
|
! c = rl_read_key ();
|
||||||
|
RL_UNSETSTATE(RL_STATE_MOREINPUT);
|
||||||
|
+ if (c < 0)
|
||||||
|
+ return -1;
|
||||||
|
+ _rl_vi_last_search_char = c;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
***************
|
||||||
|
*** 1468,1471 ****
|
||||||
|
--- 1501,1507 ----
|
||||||
|
RL_UNSETSTATE(RL_STATE_MOREINPUT);
|
||||||
|
|
||||||
|
+ if (c < 0)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
#if defined (HANDLE_MULTIBYTE)
|
||||||
|
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
|
||||||
|
***************
|
||||||
|
*** 1486,1489 ****
|
||||||
|
--- 1522,1528 ----
|
||||||
|
_rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX);
|
||||||
|
|
||||||
|
+ if (c < 0)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
_rl_callback_func = 0;
|
||||||
|
_rl_want_redisplay = 1;
|
||||||
|
***************
|
||||||
|
*** 1517,1520 ****
|
||||||
|
--- 1556,1562 ----
|
||||||
|
_rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX);
|
||||||
|
|
||||||
|
+ if (c < 0)
|
||||||
|
+ return -1;
|
||||||
|
+
|
||||||
|
return (_rl_vi_change_char (count, c, mb));
|
||||||
|
}
|
||||||
|
***************
|
||||||
|
*** 1651,1655 ****
|
||||||
|
RL_UNSETSTATE(RL_STATE_MOREINPUT);
|
||||||
|
|
||||||
|
! if (ch < 'a' || ch > 'z')
|
||||||
|
{
|
||||||
|
rl_ding ();
|
||||||
|
--- 1693,1697 ----
|
||||||
|
RL_UNSETSTATE(RL_STATE_MOREINPUT);
|
||||||
|
|
||||||
|
! if (ch < 0 || ch < 'a' || ch > 'z') /* make test against 0 explicit */
|
||||||
|
{
|
||||||
|
rl_ding ();
|
||||||
|
***************
|
||||||
|
*** 1703,1707 ****
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
! else if (ch < 'a' || ch > 'z')
|
||||||
|
{
|
||||||
|
rl_ding ();
|
||||||
|
--- 1745,1749 ----
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
! else if (ch < 0 || ch < 'a' || ch > 'z') /* make test against 0 explicit */
|
||||||
|
{
|
||||||
|
rl_ding ();
|
||||||
|
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
|
||||||
|
--- patchlevel.h Mon Oct 16 14:22:54 2006
|
||||||
|
***************
|
||||||
|
*** 26,30 ****
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 18
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
|
--- 26,30 ----
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 19
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
183
bash32-020
Normal file
183
bash32-020
Normal file
@ -0,0 +1,183 @@
|
|||||||
|
BASH PATCH REPORT
|
||||||
|
=================
|
||||||
|
|
||||||
|
Bash-Release: 3.2
|
||||||
|
Patch-ID: bash32-020
|
||||||
|
|
||||||
|
Bug-Reported-by: Ian A Watson <WATSON_IAN_A@LILLY.COM>
|
||||||
|
Bug-Reference-ID: <OFEC551808.69D02C7F-ON8525729A.0045708D-8525729A.0046150B@EliLilly.lilly.com>
|
||||||
|
Bug-Reference-URL:
|
||||||
|
|
||||||
|
Bug-Description:
|
||||||
|
|
||||||
|
In some cases of error processing, a jump back to the top-level processing
|
||||||
|
loop from a builtin command would leave the shell in an inconsistent state.
|
||||||
|
|
||||||
|
Patch:
|
||||||
|
|
||||||
|
*** ../bash-3.2-patched/sig.c Wed Jan 25 14:57:59 2006
|
||||||
|
--- sig.c Sat Mar 10 11:11:30 2007
|
||||||
|
***************
|
||||||
|
*** 351,354 ****
|
||||||
|
--- 351,373 ----
|
||||||
|
#undef XHANDLER
|
||||||
|
|
||||||
|
+ /* Run some of the cleanups that should be performed when we run
|
||||||
|
+ jump_to_top_level from a builtin command context. XXX - might want to
|
||||||
|
+ also call reset_parser here. */
|
||||||
|
+ void
|
||||||
|
+ top_level_cleanup ()
|
||||||
|
+ {
|
||||||
|
+ /* Clean up string parser environment. */
|
||||||
|
+ while (parse_and_execute_level)
|
||||||
|
+ parse_and_execute_cleanup ();
|
||||||
|
+
|
||||||
|
+ #if defined (PROCESS_SUBSTITUTION)
|
||||||
|
+ unlink_fifo_list ();
|
||||||
|
+ #endif /* PROCESS_SUBSTITUTION */
|
||||||
|
+
|
||||||
|
+ run_unwind_protects ();
|
||||||
|
+ loop_level = continuing = breaking = 0;
|
||||||
|
+ return_catch_flag = 0;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/* What to do when we've been interrupted, and it is safe to handle it. */
|
||||||
|
void
|
||||||
|
*** ../bash-3.2-patched/sig.h Wed Jan 25 14:50:27 2006
|
||||||
|
--- sig.h Sat Mar 10 11:14:18 2007
|
||||||
|
***************
|
||||||
|
*** 122,125 ****
|
||||||
|
--- 122,126 ----
|
||||||
|
extern void initialize_terminating_signals __P((void));
|
||||||
|
extern void reset_terminating_signals __P((void));
|
||||||
|
+ extern void top_level_cleanup __P((void));
|
||||||
|
extern void throw_to_top_level __P((void));
|
||||||
|
extern void jump_to_top_level __P((int)) __attribute__((__noreturn__));
|
||||||
|
*** ../bash-3.2-patched/builtins/common.c Tue Apr 3 16:47:13 2007
|
||||||
|
--- builtins/common.c Mon Apr 30 15:01:33 2007
|
||||||
|
***************
|
||||||
|
*** 132,135 ****
|
||||||
|
--- 132,136 ----
|
||||||
|
{
|
||||||
|
builtin_error (_("too many arguments"));
|
||||||
|
+ top_level_cleanup ();
|
||||||
|
jump_to_top_level (DISCARD);
|
||||||
|
}
|
||||||
|
***************
|
||||||
|
*** 396,400 ****
|
||||||
|
throw_to_top_level ();
|
||||||
|
else
|
||||||
|
! jump_to_top_level (DISCARD);
|
||||||
|
}
|
||||||
|
no_args (list->next);
|
||||||
|
--- 410,417 ----
|
||||||
|
throw_to_top_level ();
|
||||||
|
else
|
||||||
|
! {
|
||||||
|
! top_level_cleanup ();
|
||||||
|
! jump_to_top_level (DISCARD);
|
||||||
|
! }
|
||||||
|
}
|
||||||
|
no_args (list->next);
|
||||||
|
*** ../bash-3.2-patched/subst.c Tue Apr 3 16:47:19 2007
|
||||||
|
--- subst.c Tue Jul 17 09:45:11 2007
|
||||||
|
***************
|
||||||
|
*** 1279,1283 ****
|
||||||
|
if (no_longjmp_on_fatal_error == 0)
|
||||||
|
{ /* { */
|
||||||
|
! report_error ("bad substitution: no closing `%s' in %s", "}", string);
|
||||||
|
last_command_exit_value = EXECUTION_FAILURE;
|
||||||
|
exp_jump_to_top_level (DISCARD);
|
||||||
|
--- 1290,1294 ----
|
||||||
|
if (no_longjmp_on_fatal_error == 0)
|
||||||
|
{ /* { */
|
||||||
|
! report_error (_("bad substitution: no closing `%s' in %s"), "}", string);
|
||||||
|
last_command_exit_value = EXECUTION_FAILURE;
|
||||||
|
exp_jump_to_top_level (DISCARD);
|
||||||
|
***************
|
||||||
|
*** 7662,7665 ****
|
||||||
|
--- 7706,7711 ----
|
||||||
|
expand_no_split_dollar_star = 0; /* XXX */
|
||||||
|
expanding_redir = 0;
|
||||||
|
+
|
||||||
|
+ top_level_cleanup (); /* from sig.c */
|
||||||
|
|
||||||
|
jump_to_top_level (v);
|
||||||
|
***************
|
||||||
|
*** 7880,7884 ****
|
||||||
|
{
|
||||||
|
report_error (_("no match: %s"), tlist->word->word);
|
||||||
|
! jump_to_top_level (DISCARD);
|
||||||
|
}
|
||||||
|
else if (allow_null_glob_expansion == 0)
|
||||||
|
--- 7927,7931 ----
|
||||||
|
{
|
||||||
|
report_error (_("no match: %s"), tlist->word->word);
|
||||||
|
! exp_jump_to_top_level (DISCARD);
|
||||||
|
}
|
||||||
|
else if (allow_null_glob_expansion == 0)
|
||||||
|
*** ../bash-3.2-patched/arrayfunc.c Thu Jul 27 09:37:59 2006
|
||||||
|
--- arrayfunc.c Thu May 31 11:55:46 2007
|
||||||
|
***************
|
||||||
|
*** 619,622 ****
|
||||||
|
--- 619,624 ----
|
||||||
|
{
|
||||||
|
last_command_exit_value = EXECUTION_FAILURE;
|
||||||
|
+
|
||||||
|
+ top_level_cleanup ();
|
||||||
|
jump_to_top_level (DISCARD);
|
||||||
|
}
|
||||||
|
*** ../bash-3.2-patched/expr.c Wed Dec 28 17:47:03 2005
|
||||||
|
--- expr.c Tue Apr 24 14:17:59 2007
|
||||||
|
***************
|
||||||
|
*** 930,933 ****
|
||||||
|
--- 930,934 ----
|
||||||
|
{
|
||||||
|
expr_unwind ();
|
||||||
|
+ top_level_cleanup ();
|
||||||
|
jump_to_top_level (DISCARD);
|
||||||
|
}
|
||||||
|
*** ../bash-3.2-patched/variables.c Fri Sep 8 13:33:32 2006
|
||||||
|
--- variables.c Tue Jul 17 09:54:59 2007
|
||||||
|
***************
|
||||||
|
*** 1822,1830 ****
|
||||||
|
lval = evalexp (oval, &expok); /* ksh93 seems to do this */
|
||||||
|
if (expok == 0)
|
||||||
|
! jump_to_top_level (DISCARD);
|
||||||
|
}
|
||||||
|
rval = evalexp (value, &expok);
|
||||||
|
if (expok == 0)
|
||||||
|
! jump_to_top_level (DISCARD);
|
||||||
|
if (flags & ASS_APPEND)
|
||||||
|
rval += lval;
|
||||||
|
--- 1855,1869 ----
|
||||||
|
lval = evalexp (oval, &expok); /* ksh93 seems to do this */
|
||||||
|
if (expok == 0)
|
||||||
|
! {
|
||||||
|
! top_level_cleanup ();
|
||||||
|
! jump_to_top_level (DISCARD);
|
||||||
|
! }
|
||||||
|
}
|
||||||
|
rval = evalexp (value, &expok);
|
||||||
|
if (expok == 0)
|
||||||
|
! {
|
||||||
|
! top_level_cleanup ();
|
||||||
|
! jump_to_top_level (DISCARD);
|
||||||
|
! }
|
||||||
|
if (flags & ASS_APPEND)
|
||||||
|
rval += lval;
|
||||||
|
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
|
||||||
|
--- patchlevel.h Mon Oct 16 14:22:54 2006
|
||||||
|
***************
|
||||||
|
*** 26,30 ****
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 19
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
||||||
|
--- 26,30 ----
|
||||||
|
looks for to find the patch level (for the sccs version string). */
|
||||||
|
|
||||||
|
! #define PATCHLEVEL 20
|
||||||
|
|
||||||
|
#endif /* _PATCHLEVEL_H_ */
|
Loading…
Reference in New Issue
Block a user