mirror of
https://github.com/morgan9e/systemd
synced 2026-04-14 00:14:32 +09:00
test: PR_DEATHSIG is reset after changing id/gid
Child processes are left hanging on abort() as these child procs
freeze(), so test suites hang as well when test-namespace fails,
and processes are leaked.
From the docs:
The parent-death signal setting is also cleared upon changes to any of
the following thread credentials: effective user ID, effective group ID,
filesystem user ID, or filesystem group ID.
Set the deathsig again after changing id.
Follow-up for 2ade821859
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <linux/prctl.h>
|
||||
#include <sched.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/prctl.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sysexits.h>
|
||||
@@ -311,6 +313,10 @@ TEST(process_is_owned_by_uid) {
|
||||
if (r == 0) {
|
||||
p[0] = safe_close(p[0]);
|
||||
ASSERT_OK(fully_set_uid_gid(1, 1, NULL, 0));
|
||||
|
||||
/* After successfully changing id/gid DEATHSIG is reset, so it has to be set again */
|
||||
ASSERT_OK_ERRNO(prctl(PR_SET_PDEATHSIG, SIGKILL));
|
||||
|
||||
ASSERT_OK_EQ_ERRNO(write(p[1], &(const char[]) { 'x' }, 1), 1);
|
||||
p[1] = safe_close(p[1]);
|
||||
freeze();
|
||||
@@ -346,6 +352,9 @@ TEST(process_is_owned_by_uid) {
|
||||
|
||||
ASSERT_OK(reset_uid_gid());
|
||||
|
||||
/* After successfully changing id/gid DEATHSIG is reset, so it has to be set again */
|
||||
ASSERT_OK_ERRNO(prctl(PR_SET_PDEATHSIG, SIGKILL));
|
||||
|
||||
ASSERT_OK_EQ_ERRNO(write(p[1], &(const char[]) { 'x' }, 1), 1);
|
||||
p[1] = safe_close(p[1]);
|
||||
freeze();
|
||||
|
||||
Reference in New Issue
Block a user