aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNIIBE Yutaka <[email protected]>2026-02-03 05:23:14 +0100
committerNIIBE Yutaka <[email protected]>2026-02-03 05:23:14 +0100
commit6e40339569fc45eb6ac9e763646bd7742e035650 (patch)
tree4be5e83d310acfa82a92146c2209c813eb7305dd /src
parentpo: Update Swedish translation. (diff)
downloadlibgpg-error-gniib/t8065.tar.gz
libgpg-error-gniib/t8065.zip
spawn:posix: Take care of POSIX semaphore "shared" semantics.gniib/t8065
* src/spawn-posix.c (spawn_detached): Don't call _gpgrt_post_syscall on the child process. (_gpgrt_process_spawn): Likewise. -- On NetBSD, a POSIX semaphore is somehow shared among processes, even if sem_init is called with PSHARED=0. GnuPG-bug-id: 8065 Signed-off-by: NIIBE Yutaka <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/spawn-posix.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/spawn-posix.c b/src/spawn-posix.c
index bd236ad..55f6379 100644
--- a/src/spawn-posix.c
+++ b/src/spawn-posix.c
@@ -460,9 +460,9 @@ spawn_detached (const char *pgmname, const char *argv[],
_gpgrt_pre_syscall ();
pid = fork ();
- _gpgrt_post_syscall ();
if (pid == (pid_t)(-1))
{
+ _gpgrt_post_syscall ();
ec = _gpg_err_code_from_syserror ();
_gpgrt_log_info (_("error forking process: %s\n"), _gpg_strerror (ec));
xfree (argv);
@@ -486,6 +486,7 @@ spawn_detached (const char *pgmname, const char *argv[],
/*NOTREACHED*/
}
+ _gpgrt_post_syscall ();
xfree (argv);
_gpgrt_pre_syscall ();
if (waitpid (pid, NULL, 0) == -1)
@@ -752,9 +753,9 @@ _gpgrt_process_spawn (const char *pgmname, const char *argv1[],
_gpgrt_pre_syscall ();
pid = fork ();
- _gpgrt_post_syscall ();
if (pid == (pid_t)(-1))
{
+ _gpgrt_post_syscall ();
ec = _gpg_err_code_from_syserror ();
_gpgrt_log_info (_("error forking process: %s\n"), _gpg_strerror (ec));
if (fd_in[0] >= 0 && fd_in[0] != 0)
@@ -802,6 +803,7 @@ _gpgrt_process_spawn (const char *pgmname, const char *argv1[],
/*NOTREACHED*/
}
+ _gpgrt_post_syscall ();
xfree (argv);
process->pid = pid;