manual: sigaction's sa_flags field and SA_SIGINFO (RHEL-67592)

Resolves: RHEL-67592
This commit is contained in:
DJ Delorie 2025-02-04 22:10:46 -05:00
parent 38cc5f2c2b
commit f604405c3e
5 changed files with 247 additions and 1 deletions

27
glibc-RHEL-67592-1.patch Normal file
View File

@ -0,0 +1,27 @@
From ca7334d34b7811fc261c84c498fd4a19acd70530 Mon Sep 17 00:00:00 2001
From: Florian Weimer <fweimer@redhat.com>
Date: Mon, 28 Feb 2022 11:50:41 +0100
Subject: [PATCH] manual: SA_ONSTACK is ignored without alternate stack
Content-type: text/plain; charset=UTF-8
The current stack is used. No SIGILL is generated.
---
manual/signal.texi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/manual/signal.texi b/manual/signal.texi
index 8a12baf044..5c2ba7dae6 100644
--- a/manual/signal.texi
+++ b/manual/signal.texi
@@ -1329,7 +1329,7 @@ Setting this flag for a signal other than @code{SIGCHLD} has no effect.
If this flag is set for a particular signal number, the system uses the
signal stack when delivering that kind of signal. @xref{Signal Stack}.
If a signal with this flag arrives and you have not set a signal stack,
-the system terminates the program with @code{SIGILL}.
+the normal user stack is used instead, as if the flag had not been set.
@end deftypevr
@deftypevr Macro int SA_RESTART
--
2.43.5

89
glibc-RHEL-67592-2.patch Normal file
View File

@ -0,0 +1,89 @@
From 87cd94bba4091d22e24116298ade33b712ada235 Mon Sep 17 00:00:00 2001
From: DJ Delorie <dj@redhat.com>
Date: Tue, 10 Dec 2024 17:07:21 -0500
Subject: [PATCH] manual: Document more sigaction flags
Content-type: text/plain; charset=UTF-8
Adds documentation for three-argument handler
Adds remainder of the SA_* flags
Reviewed-by: Florian Weimer <fweimer@redhat.com>
---
manual/signal.texi | 39 +++++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)
diff --git a/manual/signal.texi b/manual/signal.texi
index 5c2ba7dae6..2012980efe 100644
--- a/manual/signal.texi
+++ b/manual/signal.texi
@@ -1141,6 +1141,15 @@ This is used in the same way as the @var{action} argument to the
@code{signal} function. The value can be @code{SIG_DFL},
@code{SIG_IGN}, or a function pointer. @xref{Basic Signal Handling}.
+@item void (*sa_sigaction) (int @var{signum}, siginfo_t *@var{info}, void *@var{ucontext})
+This is an alternate to @code{sa_handler} that is used when the
+@code{sa_flags} includes the @code{flag SA_SIGINFO}. Note that this
+and @code{sa_handler} overlap; only ever set one at a time.
+
+The contents of the @var{info} and @var{ucontext} structures are
+kernel and architecture dependent. Please see
+@manpageurl{sigaction,2} for details.
+
@item sigset_t sa_mask
This specifies a set of signals to be blocked while the handler runs.
Blocking is explained in @ref{Blocking for Handler}. Note that the
@@ -1324,6 +1333,24 @@ delivered for both terminated children and stopped children.
Setting this flag for a signal other than @code{SIGCHLD} has no effect.
@end deftypevr
+@deftypevr Macro int SA_NOCLDWAIT
+This flag is meaningful only for the @code{SIGCHLD} signal. When the
+flag is set, the terminated child will not wait for the parent to reap
+it, or become a zombie if not reaped. The child will instead be
+reaped by the kernel immediately on termination, similar to setting
+SIGCHLD to SIG_IGN.
+
+Setting this flag for a signal other than @code{SIGCHLD} has no effect.
+@end deftypevr
+
+@deftypevr Macro int SA_NODEFER
+Normally a signal is added to the signal mask while running its own
+handler; this negates that, so that the same signal can be received
+while it's handler is running. Note that if the signal is included in
+@code{sa_mask}, it is masked regardless of this flag. Only useful when
+assigning a function as a signal handler.
+@end deftypevr
+
@deftypevr Macro int SA_ONSTACK
@standards{BSD, signal.h}
If this flag is set for a particular signal number, the system uses the
@@ -1332,6 +1359,12 @@ If a signal with this flag arrives and you have not set a signal stack,
the normal user stack is used instead, as if the flag had not been set.
@end deftypevr
+@deftypevr Macro int SA_RESETHAND
+Resets the handler for a signal to SIG_DFL, at the moment specified
+handler function begins. I.e. the handler is called once, then the
+action resets.
+@end deftypevr
+
@deftypevr Macro int SA_RESTART
@standards{BSD, signal.h}
This flag controls what happens when a signal is delivered during
@@ -1347,6 +1380,12 @@ clear, returning from a handler makes the function fail.
@xref{Interrupted Primitives}.
@end deftypevr
+@deftypevr Macro int SA_SIGINFO
+Indicates that the @code{sa_sigaction} three-argument form of the
+handler should be used in setting up a handler instead of the
+one-argument @code{sa_handler} form.
+@end deftypevr
+
@node Initial Signal Actions
@subsection Initial Signal Actions
@cindex initial signal actions
--
2.43.5

38
glibc-RHEL-67592-3.patch Normal file
View File

@ -0,0 +1,38 @@
From 298bc488fdc047da37482f4003023cb9adef78f8 Mon Sep 17 00:00:00 2001
From: Florian Weimer <fweimer@redhat.com>
Date: Wed, 11 Sep 2024 10:05:08 +0200
Subject: [PATCH] manual: Extract the @manpageurl{func,sec} macro
Content-type: text/plain; charset=UTF-8
From the existing @manpagefunctionstub{func,sec} macro,
so that URLs can be included in the manual without the
stub text.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
---
manual/macros.texi | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/manual/macros.texi b/manual/macros.texi
index 579da3fb81..f48dd4ec22 100644
--- a/manual/macros.texi
+++ b/manual/macros.texi
@@ -282,10 +282,13 @@ cwd\comments\
@macro standardsx {element, standard, header}
@end macro
+@macro manpageurl {func, sec}
+@url{https://man7.org/linux/man-pages/man\sec\/\func\.\sec\.html}
+@end macro
+
@macro manpagefunctionstub {func,sec}
This documentation is a stub. For additional information on this
-function, consult the manual page
-@url{https://man7.org/linux/man-pages/man\sec\/\func\.\sec\.html}.
+function, consult the manual page @manpageurl{\func\,\sec\}.
@xref{Linux Kernel}.
@end macro
--
2.43.5

85
glibc-RHEL-67592-4.patch Normal file
View File

@ -0,0 +1,85 @@
From 37a0933e1bf97346b45463bde0c4631be8abaa07 Mon Sep 17 00:00:00 2001
From: DJ Delorie <dj@redhat.com>
Date: Tue, 10 Dec 2024 16:57:21 -0500
Subject: [PATCH] manual: make @manpageurl more specific to each output
Content-type: text/plain; charset=UTF-8
Tweak the @manpageurl macro to customize the output for
each of html, info, and pdf output. HTML and PDF (at
least, these days) support clicking on the link title,
whereas info does not. Add text to the intro section
explaining which man pages are normative and which
aren't.
Conflicts
manual/resource.texi
Removed; unneeded
---
manual/intro.texi | 14 +++++++++++++-
manual/macros.texi | 12 ++++++++++--
manual/resource.texi | 3 +--
3 files changed, 24 insertions(+), 5 deletions(-)
diff --git a/manual/intro.texi b/manual/intro.texi
index 879c1b38d9..d95648468d 100644
--- a/manual/intro.texi
+++ b/manual/intro.texi
@@ -966,13 +966,25 @@ functionality is available on commercial systems.
@Theglibc{} includes by reference the Linux man-pages
@value{man_pages_version} documentation to document the listed
-syscalls for the Linux kernel. For reference purposes only the latest
+syscalls for the Linux kernel. For reference purposes only, the latest
@uref{https://www.kernel.org/doc/man-pages/,Linux man-pages Project}
documentation can be accessed from the
@uref{https://www.kernel.org,Linux kernel} website. Where the syscall
has more specific documentation in this manual that more specific
documentation is considered authoritative.
+Throughout this manual, when we refer to a man page, for example:
+@quotation
+@manpageurl{sendmsg,2}
+@end quotation
+@noindent
+we are referring primarily to the specific version noted above (the
+``normative'' version), typically accessed by running (for example)
+@code{man 2 sendmsg} on a system with that version installed. For
+convenience, we will also link to the online latest copy of the man
+pages, but keep in mind that version will almost always be newer than,
+and thus different than, the normative version noted above.
+
Additional details on the Linux system call interface can be found in
@xref{System Calls}.
diff --git a/manual/macros.texi b/manual/macros.texi
index f48dd4ec22..2003ce2678 100644
--- a/manual/macros.texi
+++ b/manual/macros.texi
@@ -282,14 +282,22 @@ cwd\comments\
@macro standardsx {element, standard, header}
@end macro
+@ifhtml
@macro manpageurl {func, sec}
-@url{https://man7.org/linux/man-pages/man\sec\/\func\.\sec\.html}
+@url{https://man7.org/linux/man-pages/man\sec\/\func\.\sec\.html,,\func\(\sec\)}
+@xref{Linux Kernel}
@end macro
+@end ifhtml
+@ifnothtml
+@macro manpageurl {func, sec}
+\func\(\sec\) (Latest, online: @url{https://man7.org/linux/man-pages/man\sec\/\func\.\sec\.html})
+@xref{Linux Kernel}
+@end macro
+@end ifnothtml
@macro manpagefunctionstub {func,sec}
This documentation is a stub. For additional information on this
function, consult the manual page @manpageurl{\func\,\sec\}.
-@xref{Linux Kernel}.
@end macro
@end ifclear
--
2.43.5

View File

@ -157,7 +157,7 @@ end \
Summary: The GNU libc libraries
Name: glibc
Version: %{glibcversion}
Release: 162%{?dist}
Release: 163%{?dist}
# In general, GPLv2+ is used by programs, LGPLv2+ is used for
# libraries.
@ -1094,6 +1094,10 @@ Patch786: glibc-RHEL-75810-2.patch
Patch787: glibc-RHEL-75810-3.patch
Patch788: glibc-RHEL-46761-5.patch
Patch789: glibc-RHEL-75938.patch
Patch790: glibc-RHEL-67592-1.patch
Patch791: glibc-RHEL-67592-2.patch
Patch792: glibc-RHEL-67592-3.patch
Patch793: glibc-RHEL-67592-4.patch
##############################################################################
# Continued list of core "glibc" package information:
@ -3087,6 +3091,9 @@ update_gconv_modules_cache ()
%endif
%changelog
* Tue Feb 4 2025 DJ Delorie <dj@redhat.com> - 2.34-163
- manual: sigaction's sa_flags field and SA_SIGINFO (RHEL-67592)
* Wed Jan 29 2025 Patsy Griffin <patsy@redhat.com> - 2.34-162
- CVE-2025-0395: fix underallocation of abort_msg_s struct (RHEL-75938)