.
OBS-URL: https://build.opensuse.org/package/show/Base:System/bash?expand=0&rev=67
This commit is contained in:
parent
0bd33b74a3
commit
f420d1adce
BIN
bash-4.2-history-myown.dif.bz2
(Stored with Git LFS)
Normal file
BIN
bash-4.2-history-myown.dif.bz2
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -1,123 +1,34 @@
|
|||||||
--- shell.c
|
*** ../bash-4.2-patched/sig.c Tue Nov 23 08:21:22 2010
|
||||||
+++ shell.c 2011-03-08 17:25:55.160426342 +0000
|
--- sig.c Tue Mar 8 21:28:32 2011
|
||||||
@@ -261,6 +261,11 @@ static const struct {
|
***************
|
||||||
{ (char *)0x0, Int, (int *)0x0, (char **)0x0 }
|
*** 47,50 ****
|
||||||
};
|
--- 47,51 ----
|
||||||
|
#if defined (READLINE)
|
||||||
|
# include "bashline.h"
|
||||||
|
+ # include <readline/readline.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
+#if defined (HAVE_POSIX_SIGSETJMP)
|
***************
|
||||||
+volatile procenv_t terminating_now;
|
*** 63,66 ****
|
||||||
+volatile sig_atomic_t jump_with_sig;
|
--- 64,68 ----
|
||||||
+#endif /* HAVE_POSIX_SIGSETJMP */
|
extern int history_lines_this_session;
|
||||||
+
|
#endif
|
||||||
/* These are extern so execute_simple_command can set them, and then
|
+ extern int no_line_editing;
|
||||||
longjmp back to main to execute a shell script, instead of calling
|
|
||||||
main () again and resulting in indefinite, possibly fatal, stack
|
|
||||||
@@ -379,6 +384,39 @@ main (argc, argv, env)
|
|
||||||
if (code)
|
|
||||||
exit (2);
|
|
||||||
|
|
||||||
+#if defined (HAVE_POSIX_SIGSETJMP)
|
extern void initialize_siglist ();
|
||||||
+ /* Catch signals here */
|
***************
|
||||||
+ if (sigsetjmp (terminating_now, 1))
|
*** 506,510 ****
|
||||||
+ {
|
#if defined (HISTORY)
|
||||||
+ int sig = jump_with_sig;
|
/* XXX - will inhibit history file being written */
|
||||||
+
|
! history_lines_this_session = 0;
|
||||||
+ /* I don't believe this condition ever tests true. */
|
#endif
|
||||||
+ if (sig == SIGINT && signal_is_trapped (SIGINT))
|
terminate_immediately = 0;
|
||||||
+ run_interrupt_trap ();
|
--- 508,515 ----
|
||||||
+
|
#if defined (HISTORY)
|
||||||
+# if defined (HISTORY)
|
/* XXX - will inhibit history file being written */
|
||||||
+ if (interactive_shell && sig != SIGABRT)
|
! # if defined (READLINE)
|
||||||
+ maybe_save_shell_history ();
|
! if (interactive_shell == 0 || interactive == 0 || (sig != SIGHUP && sig != SIGTERM) || no_line_editing || (RL_ISSTATE (RL_STATE_READCMD) == 0))
|
||||||
+# endif /* HISTORY */
|
! # endif
|
||||||
+
|
! history_lines_this_session = 0;
|
||||||
+# if defined (JOB_CONTROL)
|
#endif
|
||||||
+ if (sig == SIGHUP && (interactive || (subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PROCSUB))))
|
terminate_immediately = 0;
|
||||||
+ hangup_all_jobs ();
|
|
||||||
+ end_job_control ();
|
|
||||||
+# endif /* JOB_CONTROL */
|
|
||||||
+
|
|
||||||
+# if defined (PROCESS_SUBSTITUTION)
|
|
||||||
+ unlink_fifo_list ();
|
|
||||||
+# endif /* PROCESS_SUBSTITUTION */
|
|
||||||
+
|
|
||||||
+ run_exit_trap ();
|
|
||||||
+ set_signal_handler (sig, SIG_DFL);
|
|
||||||
+ kill (getpid (), sig);
|
|
||||||
+ _exit(0);
|
|
||||||
+ }
|
|
||||||
+ jump_with_sig = 0;
|
|
||||||
+#endif /* HAVE_POSIX_SIGSETJMP */
|
|
||||||
+
|
|
||||||
xtrace_init ();
|
|
||||||
|
|
||||||
#if defined (USING_BASH_MALLOC) && defined (DEBUG) && !defined (DISABLE_MALLOC_WRAPPERS)
|
|
||||||
--- sig.c
|
|
||||||
+++ sig.c 2011-03-08 17:26:31.627928783 +0000
|
|
||||||
@@ -503,7 +503,7 @@ termsig_sighandler (sig)
|
|
||||||
/* XXX - should this also trigger when interrupt_immediately is set? */
|
|
||||||
if (terminate_immediately)
|
|
||||||
{
|
|
||||||
-#if defined (HISTORY)
|
|
||||||
+#if defined (HISTORY) && ! defined (HAVE_POSIX_SIGSETJMP)
|
|
||||||
/* XXX - will inhibit history file being written */
|
|
||||||
history_lines_this_session = 0;
|
|
||||||
#endif
|
|
||||||
@@ -514,6 +514,11 @@ termsig_sighandler (sig)
|
|
||||||
SIGRETURN (0);
|
|
||||||
}
|
|
||||||
|
|
||||||
+#if defined (HAVE_POSIX_SIGSETJMP)
|
|
||||||
+extern volatile procenv_t terminating_now;
|
|
||||||
+extern volatile sig_atomic_t jump_with_sig;
|
|
||||||
+#endif /* HAVE_POSIX_SIGSETJMP */
|
|
||||||
+
|
|
||||||
void
|
|
||||||
termsig_handler (sig)
|
|
||||||
int sig;
|
|
||||||
@@ -528,32 +533,39 @@ termsig_handler (sig)
|
|
||||||
handling_termsig = 1;
|
|
||||||
terminating_signal = 0; /* keep macro from re-testing true. */
|
|
||||||
|
|
||||||
+#if ! defined (HAVE_POSIX_SIGSETJMP)
|
|
||||||
/* I don't believe this condition ever tests true. */
|
|
||||||
if (sig == SIGINT && signal_is_trapped (SIGINT))
|
|
||||||
run_interrupt_trap ();
|
|
||||||
|
|
||||||
-#if defined (HISTORY)
|
|
||||||
+# if defined (HISTORY)
|
|
||||||
if (interactive_shell && sig != SIGABRT)
|
|
||||||
maybe_save_shell_history ();
|
|
||||||
-#endif /* HISTORY */
|
|
||||||
+# endif /* HISTORY */
|
|
||||||
|
|
||||||
-#if defined (JOB_CONTROL)
|
|
||||||
+# if defined (JOB_CONTROL)
|
|
||||||
if (sig == SIGHUP && (interactive || (subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PROCSUB))))
|
|
||||||
hangup_all_jobs ();
|
|
||||||
end_job_control ();
|
|
||||||
-#endif /* JOB_CONTROL */
|
|
||||||
+# endif /* JOB_CONTROL */
|
|
||||||
|
|
||||||
-#if defined (PROCESS_SUBSTITUTION)
|
|
||||||
+# if defined (PROCESS_SUBSTITUTION)
|
|
||||||
unlink_fifo_list ();
|
|
||||||
-#endif /* PROCESS_SUBSTITUTION */
|
|
||||||
+# endif /* PROCESS_SUBSTITUTION */
|
|
||||||
+#endif /* ! HAVE_POSIX_SIGSETJMP */
|
|
||||||
|
|
||||||
/* Reset execution context */
|
|
||||||
loop_level = continuing = breaking = funcnest = 0;
|
|
||||||
executing_list = comsub_ignore_return = return_catch_flag = 0;
|
|
||||||
|
|
||||||
+#if defined (HAVE_POSIX_SIGSETJMP)
|
|
||||||
+ jump_with_sig = sig;
|
|
||||||
+ siglongjmp(terminating_now, 1);
|
|
||||||
+#else /* ! HAVE_POSIX_SIGSETJMP */
|
|
||||||
run_exit_trap ();
|
|
||||||
set_signal_handler (sig, SIG_DFL);
|
|
||||||
kill (getpid (), sig);
|
|
||||||
+#endif /* ! HAVE_POSIX_SIGSETJMP */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* What we really do when SIGINT occurs. */
|
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Mar 9 12:00:48 CET 2011 - werner@suse.de
|
||||||
|
|
||||||
|
- Avoid siglongjmp, compare with
|
||||||
|
http://lists.gnu.org/archive/html/bug-bash/2011-03/msg00070.html
|
||||||
|
use temprary solution from Chet
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Mar 8 18:47:59 CET 2011 - werner@suse.de
|
Tue Mar 8 18:47:59 CET 2011 - werner@suse.de
|
||||||
|
|
||||||
|
@ -49,6 +49,11 @@ Source5: dot.bashrc
|
|||||||
Source6: dot.profile
|
Source6: dot.profile
|
||||||
Source7: bash-rpmlintrc
|
Source7: bash-rpmlintrc
|
||||||
Source8: baselibs.conf
|
Source8: baselibs.conf
|
||||||
|
# Remember unsafe method, compare with
|
||||||
|
# http://lists.gnu.org/archive/html/bug-bash/2011-03/msg00070.html
|
||||||
|
# http://lists.gnu.org/archive/html/bug-bash/2011-03/msg00071.html
|
||||||
|
# http://lists.gnu.org/archive/html/bug-bash/2011-03/msg00073.html
|
||||||
|
Source9: bash-4.2-history-myown.dif.bz2
|
||||||
Patch0: bash-%{bash_vers}.dif
|
Patch0: bash-%{bash_vers}.dif
|
||||||
Patch1: bash-2.03-manual.patch
|
Patch1: bash-2.03-manual.patch
|
||||||
Patch2: bash-4.0-security.patch
|
Patch2: bash-4.0-security.patch
|
||||||
|
Loading…
Reference in New Issue
Block a user