Signal handler fix and man page tweak
Resolves: #799958, #695656 Signed-off-by: Roman Rakus <rrakus@redhat.com>
This commit is contained in:
parent
e40ab873ee
commit
a34730d81f
12
bash-4.2-manpage_trap.patch
Normal file
12
bash-4.2-manpage_trap.patch
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
diff -up bash-4.1/doc/bash.1.manpage_trap bash-4.1/doc/bash.1
|
||||||
|
--- bash-4.1/doc/bash.1.manpage_trap 2012-08-28 10:06:00.561999092 +0200
|
||||||
|
+++ bash-4.1/doc/bash.1 2012-08-28 10:06:24.225304505 +0200
|
||||||
|
@@ -9251,7 +9251,7 @@ being inverted via
|
||||||
|
These are the same conditions obeyed by the \fBerrexit\fP option.
|
||||||
|
.if t .sp 0.5
|
||||||
|
.if n .sp 1
|
||||||
|
-Signals ignored upon entry to the shell cannot be trapped or reset.
|
||||||
|
+Signals ignored upon entry to the shell cannot be trapped, reset or listed.
|
||||||
|
Trapped signals that are not being ignored are reset to their original
|
||||||
|
values in a subshell or subshell environment when one is created.
|
||||||
|
The return status is false if any
|
36
bash-4.2-signal.patch
Normal file
36
bash-4.2-signal.patch
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
diff -up bash-4.1/sig.h.signal bash-4.1/sig.h
|
||||||
|
--- bash-4.1/sig.h.signal 2009-01-04 20:32:41.000000000 +0100
|
||||||
|
+++ bash-4.1/sig.h 2012-08-28 11:19:14.920224571 +0200
|
||||||
|
@@ -96,6 +96,8 @@ do { \
|
||||||
|
sigprocmask (SIG_BLOCK, &nvar, &ovar); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
+#define UNBLOCK_SIGNAL(ovar) sigprocmask (SIG_SETMASK, &ovar, (sigset_t *)NULL)
|
||||||
|
+
|
||||||
|
#if defined (HAVE_POSIX_SIGNALS)
|
||||||
|
# define BLOCK_CHILD(nvar, ovar) \
|
||||||
|
BLOCK_SIGNAL (SIGCHLD, nvar, ovar)
|
||||||
|
diff -up bash-4.1/trap.c.signal bash-4.1/trap.c
|
||||||
|
--- bash-4.1/trap.c.signal 2009-10-10 23:21:44.000000000 +0200
|
||||||
|
+++ bash-4.1/trap.c 2012-08-28 10:58:14.746345797 +0200
|
||||||
|
@@ -516,6 +516,8 @@ set_signal (sig, string)
|
||||||
|
int sig;
|
||||||
|
char *string;
|
||||||
|
{
|
||||||
|
+ sigset_t set, oset;
|
||||||
|
+
|
||||||
|
if (SPECIAL_TRAP (sig))
|
||||||
|
{
|
||||||
|
change_signal (sig, savestring (string));
|
||||||
|
@@ -546,9 +548,10 @@ set_signal (sig, string)
|
||||||
|
environment in which it is safe to do so. */
|
||||||
|
if ((sigmodes[sig] & SIG_NO_TRAP) == 0)
|
||||||
|
{
|
||||||
|
- set_signal_handler (sig, SIG_IGN);
|
||||||
|
+ BLOCK_SIGNAL (sig, set, oset);
|
||||||
|
change_signal (sig, savestring (string));
|
||||||
|
set_signal_handler (sig, trap_handler);
|
||||||
|
+ UNBLOCK_SIGNAL (oset);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
change_signal (sig, savestring (string));
|
18
bash.spec
18
bash.spec
@ -6,7 +6,7 @@
|
|||||||
Version: %{baseversion}%{patchleveltag}
|
Version: %{baseversion}%{patchleveltag}
|
||||||
Name: bash
|
Name: bash
|
||||||
Summary: The GNU Bourne Again shell
|
Summary: The GNU Bourne Again shell
|
||||||
Release: 6%{?dist}
|
Release: 7%{?dist}
|
||||||
Group: System Environment/Shells
|
Group: System Environment/Shells
|
||||||
License: GPLv3+
|
License: GPLv3+
|
||||||
Url: http://www.gnu.org/software/bash
|
Url: http://www.gnu.org/software/bash
|
||||||
@ -95,6 +95,12 @@ Patch121: bash-4.2-coverity.patch
|
|||||||
# Don't call malloc in signal handler
|
# Don't call malloc in signal handler
|
||||||
Patch122: bash-4.1-defer-sigchld-trap.patch
|
Patch122: bash-4.1-defer-sigchld-trap.patch
|
||||||
|
|
||||||
|
# 799958, updated info about trap
|
||||||
|
Patch123: bash-4.2-manpage_trap.patch
|
||||||
|
|
||||||
|
# 695656, block the signal and unblock it after the new handler is installed
|
||||||
|
Patch124: bash-4.2-signal.patch
|
||||||
|
|
||||||
BuildRequires: texinfo bison
|
BuildRequires: texinfo bison
|
||||||
BuildRequires: ncurses-devel
|
BuildRequires: ncurses-devel
|
||||||
BuildRequires: autoconf, gettext
|
BuildRequires: autoconf, gettext
|
||||||
@ -184,6 +190,8 @@ This package contains documentation files for %{name}.
|
|||||||
%patch120 -p1 -b .logout
|
%patch120 -p1 -b .logout
|
||||||
%patch121 -p1 -b .coverity
|
%patch121 -p1 -b .coverity
|
||||||
%patch122 -p1 -b .defer_sigchld_trap
|
%patch122 -p1 -b .defer_sigchld_trap
|
||||||
|
%patch123 -p1
|
||||||
|
%patch124 -p1 -b .signal
|
||||||
|
|
||||||
echo %{version} > _distribution
|
echo %{version} > _distribution
|
||||||
echo %{release} > _patchlevel
|
echo %{release} > _patchlevel
|
||||||
@ -375,6 +383,10 @@ end
|
|||||||
#%doc doc/*.ps doc/*.0 doc/*.html doc/article.txt
|
#%doc doc/*.ps doc/*.0 doc/*.html doc/article.txt
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Aug 28 2012 Roman Rakus <rrakus@redhat.com> - 4.2.37-7
|
||||||
|
- Update info about trap in man page
|
||||||
|
Resolves: #799958
|
||||||
|
|
||||||
* Wed Aug 22 2012 Ondrej Oprala <ooprala@redhat.com> - 4.2.37-6
|
* Wed Aug 22 2012 Ondrej Oprala <ooprala@redhat.com> - 4.2.37-6
|
||||||
- Revert revision 4.2.37-5 - already fixed upstream
|
- Revert revision 4.2.37-5 - already fixed upstream
|
||||||
|
|
||||||
@ -386,6 +398,10 @@ end
|
|||||||
* Wed Aug 08 2012 Roman Rakus <rrakus@redhat.com> - 4.2.37-4
|
* Wed Aug 08 2012 Roman Rakus <rrakus@redhat.com> - 4.2.37-4
|
||||||
- Added doc subdir to bash-doc ownership list
|
- Added doc subdir to bash-doc ownership list
|
||||||
Resolves: #846734
|
Resolves: #846734
|
||||||
|
- instead of setting the signal handler to SIG_IGN while installing
|
||||||
|
the new trap handler, block the signal and unblock it after the new handler
|
||||||
|
is installed
|
||||||
|
Resolves: #695656
|
||||||
|
|
||||||
* Tue Jul 24 2012 Roman Rakus <rrakus@redhat.com> - 4.2.37-3
|
* Tue Jul 24 2012 Roman Rakus <rrakus@redhat.com> - 4.2.37-3
|
||||||
- Increment patchlevel tag
|
- Increment patchlevel tag
|
||||||
|
Loading…
Reference in New Issue
Block a user