diff options
author | Flavio Cruz <flaviocruz@gmail.com> | 2023-12-29 11:12:10 -0500 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2023-12-29 17:41:39 +0100 |
commit | 6eb68a228b387334c259567589838257e2bbdaf9 (patch) | |
tree | 0c1e170d555d2643d10da6056fe79c2167fdfbad | |
parent | 2c1299afbed9bc78e2d92565c334317622a68f01 (diff) | |
download | hurd-6eb68a228b387334c259567589838257e2bbdaf9.tar.gz hurd-6eb68a228b387334c259567589838257e2bbdaf9.tar.bz2 hurd-6eb68a228b387334c259567589838257e2bbdaf9.zip |
Replace deprecated sigmask with sigset_t calls
Message-ID: <20231229161211.312389-2-flaviocruz@gmail.com>
-rw-r--r-- | exec/hashexec.c | 9 | ||||
-rw-r--r-- | libdiskfs/disk-pager.c | 4 | ||||
-rw-r--r-- | libpager/pager-memcpy.c | 11 | ||||
-rw-r--r-- | libstore/memobj.c | 11 | ||||
-rw-r--r-- | startup/startup.c | 9 |
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, - ©, (sighandler_t) &fault); + { + sigset_t mask; + sigemptyset (&mask); + sigaddset (&mask, SIGSEGV); + sigaddset (&mask, SIGBUS); + hurd_catch_signal (mask, window, window + windowsize, + ©, (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); |