summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlavio Cruz <flaviocruz@gmail.com>2023-12-29 11:12:10 -0500
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2023-12-29 17:41:39 +0100
commit6eb68a228b387334c259567589838257e2bbdaf9 (patch)
tree0c1e170d555d2643d10da6056fe79c2167fdfbad
parent2c1299afbed9bc78e2d92565c334317622a68f01 (diff)
Replace deprecated sigmask with sigset_t calls
Message-ID: <20231229161211.312389-2-flaviocruz@gmail.com>
-rw-r--r--exec/hashexec.c9
-rw-r--r--libdiskfs/disk-pager.c4
-rw-r--r--libpager/pager-memcpy.c11
-rw-r--r--libstore/memobj.c11
-rw-r--r--startup/startup.c9
5 files changed, 32 insertions, 12 deletions
diff --git a/exec/hashexec.c b/exec/hashexec.c
index 9e00704e..a1072917 100644
--- a/exec/hashexec.c
+++ b/exec/hashexec.c
@@ -53,6 +53,11 @@ check_hashbang (struct execdata *e,
size_t new_argvlen;
mach_port_t *new_dtable = NULL;
mach_msg_type_number_t new_dtablesize;
+ sigset_t arg_env_sigset;
+
+ sigemptyset (&arg_env_sigset);
+ sigaddset (&arg_env_sigset, SIGSEGV);
+ sigaddset (&arg_env_sigset, SIGBUS);
file_t user_fd (int fd)
{
@@ -293,7 +298,7 @@ check_hashbang (struct execdata *e,
if (strchr (name, '/') != NULL)
error = lookup (name, 0, &name_file);
else if ((error = hurd_catch_signal
- (sigmask (SIGBUS) | sigmask (SIGSEGV),
+ (arg_env_sigset,
(vm_address_t) envp, (vm_address_t) envp + envplen,
&search_path, SIG_ERR)))
name_file = MACH_PORT_NULL;
@@ -416,7 +421,7 @@ check_hashbang (struct execdata *e,
}
/* Set up the arguments. */
- hurd_catch_signal (sigmask (SIGSEGV) | sigmask (SIGBUS),
+ hurd_catch_signal (arg_env_sigset,
(vm_address_t) argv, (vm_address_t) argv + argvlen,
&setup_args, &fault_handler);
}
diff --git a/libdiskfs/disk-pager.c b/libdiskfs/disk-pager.c
index 1a5d8bf2..7af0e3ba 100644
--- a/libdiskfs/disk-pager.c
+++ b/libdiskfs/disk-pager.c
@@ -29,7 +29,6 @@ struct pager_requests *diskfs_disk_pager_requests;
static void fault_handler (int sig, long int sigcode, struct sigcontext *scp);
static struct hurd_signal_preemptor preemptor =
{
- signals: sigmask (SIGSEGV) | sigmask (SIGBUS),
preemptor: NULL,
handler: (sighandler_t) &fault_handler,
};
@@ -73,6 +72,9 @@ diskfs_start_disk_pager (struct user_pager_info *upi,
/* Set up the signal preemptor to catch faults on the disk image. */
preemptor.first = (vm_address_t) *image;
preemptor.last = ((vm_address_t) *image + size);
+ sigemptyset (&preemptor.signals);
+ sigaddset (&preemptor.signals, SIGSEGV);
+ sigaddset (&preemptor.signals, SIGBUS);
hurd_preempt_signals (&preemptor);
/* We have the mapping; we no longer need the send right. */
diff --git a/libpager/pager-memcpy.c b/libpager/pager-memcpy.c
index caaf6f2a..2ef42a77 100644
--- a/libpager/pager-memcpy.c
+++ b/libpager/pager-memcpy.c
@@ -208,9 +208,14 @@ pager_memcpy (struct pager *pager, memory_object_t memobj,
window_size = 0;
if (sigsetjmp (buf, 1) == 0)
- hurd_catch_signal (sigmask (SIGSEGV) | sigmask (SIGBUS),
- window, window + window_size,
- &do_copy, (sighandler_t) &fault);
+ {
+ sigset_t mask;
+ sigemptyset (&mask);
+ sigaddset (&mask, SIGSEGV);
+ sigaddset (&mask, SIGBUS);
+ hurd_catch_signal (mask, window, window + window_size,
+ &do_copy, (sighandler_t) &fault);
+ }
if (! err)
assert_backtrace (n == 0);
diff --git a/libstore/memobj.c b/libstore/memobj.c
index ea2d7b9a..e98e1b26 100644
--- a/libstore/memobj.c
+++ b/libstore/memobj.c
@@ -113,9 +113,14 @@ memobj_memcpy (memory_object_t memobj,
return 0;
if (sigsetjmp (buf, 1) == 0)
- hurd_catch_signal (sigmask (SIGSEGV) | sigmask (SIGBUS),
- window, window + windowsize,
- &copy, (sighandler_t) &fault);
+ {
+ sigset_t mask;
+ sigemptyset (&mask);
+ sigaddset (&mask, SIGSEGV);
+ sigaddset (&mask, SIGBUS);
+ hurd_catch_signal (mask, window, window + windowsize,
+ &copy, (sighandler_t) &fault);
+ }
if (window)
munmap ((caddr_t) window, windowsize);
diff --git a/startup/startup.c b/startup/startup.c
index 862572c2..27af818b 100644
--- a/startup/startup.c
+++ b/startup/startup.c
@@ -826,9 +826,12 @@ main (int argc, char **argv, char **envp)
/* All programs we start should ignore job control stop signals.
That way Posix.1 B.2.2.2 is satisfied where it says that programs
not run under job control shells are protected. */
- default_ints[INIT_SIGIGN] = (sigmask (SIGTSTP)
- | sigmask (SIGTTIN)
- | sigmask (SIGTTOU));
+ sigset_t sigmask;
+ sigemptyset (&sigmask);
+ sigaddset (&sigmask, SIGTSTP);
+ sigaddset (&sigmask, SIGTTIN);
+ sigaddset (&sigmask, SIGTTOU);
+ default_ints[INIT_SIGIGN] = sigmask;
default_ports[INIT_PORT_BOOTSTRAP] = startup;
run ("/hurd/proc", default_ports, &proctask, proc_insert_ports);