From patchwork Sun Jun 26 20:59:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Wielaard X-Patchwork-Id: 55419 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 806BD385AE5F for ; Sun, 26 Jun 2022 21:11:57 +0000 (GMT) X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from gnu.wildebeest.org (gnu.wildebeest.org [45.83.234.184]) by sourceware.org (Postfix) with ESMTPS id 3BD903850864 for ; Sun, 26 Jun 2022 21:10:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 3BD903850864 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=klomp.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=klomp.org Received: from reform (deer0x0e.wildebeest.org [172.31.17.144]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by gnu.wildebeest.org (Postfix) with ESMTPSA id 3156E30005B6; Sun, 26 Jun 2022 23:10:48 +0200 (CEST) Received: by reform (Postfix, from userid 1000) id EB6762E83468; Sun, 26 Jun 2022 23:10:47 +0200 (CEST) From: Mark Wielaard To: libc-alpha@sourceware.org Subject: [PATCH 4/4] tst-personality.c: Handle personality failing with errno EPERM Date: Sun, 26 Jun 2022 22:59:15 +0200 Message-Id: <20220626205915.33201-5-mark@klomp.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220626205915.33201-1-mark@klomp.org> References: <20220626205915.33201-1-mark@klomp.org> MIME-Version: 1.0 X-Spam-Status: No, score=-11.6 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Wielaard Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" When running under a systemd service with LockPersonality set or in a container with a personality seccomp filter the personality syscall might fail with errno EPERM for some personality calls so that the kernel execution domain can not be changed from the default. Return 77 (to indicate the test is unsupported) in that case. --- sysdeps/unix/sysv/linux/tst-personality.c | 37 ++++++++++++++++++++--- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/sysdeps/unix/sysv/linux/tst-personality.c b/sysdeps/unix/sysv/linux/tst-personality.c index 5bbc3c4d0b..8fbba2b262 100644 --- a/sysdeps/unix/sysv/linux/tst-personality.c +++ b/sysdeps/unix/sysv/linux/tst-personality.c @@ -30,13 +30,40 @@ do_test (void) errno = 0xdefaced; saved_persona = personality (0xffffffff); - if (personality (test_persona) != saved_persona - || personality (0xffffffff) == -1 - || personality (PER_LINUX) == -1 - || personality (0xffffffff) != PER_LINUX - || 0xdefaced != errno) + if (saved_persona == -1 && errno == EPERM) + return 77; + + if (personality (test_persona) != saved_persona) + { + if (errno == EPERM) + { + rc = 77; + goto out; + } + else + rc = 1; + } + + if (personality (0xffffffff) == -1) + rc = 1; + + if (personality (PER_LINUX) == -1) + { + if (errno == EPERM) + { + rc = 77; + goto out; + } + rc = 1; + } + + if (personality (0xffffffff) != PER_LINUX) + rc = 1; + + if (0xdefaced != errno) rc = 1; +out: (void) personality (saved_persona); return rc; }