From patchwork Tue Sep 7 11:32:18 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Doucha X-Patchwork-Id: 1525274 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=suse.cz header.i=@suse.cz header.a=rsa-sha256 header.s=susede2_rsa header.b=F3q8xEk3; dkim=fail reason="signature verification failed" header.d=suse.cz header.i=@suse.cz header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=bnSO+/dn; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=2001:1418:10:5::2; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4H3jmY6v3yz9sXk for ; Tue, 7 Sep 2021 21:32:29 +1000 (AEST) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 21ED13C05A0 for ; Tue, 7 Sep 2021 13:32:27 +0200 (CEST) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-3.smtp.seeweb.it (in-3.smtp.seeweb.it [217.194.8.3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id EDDC23C05A0 for ; Tue, 7 Sep 2021 13:32:24 +0200 (CEST) Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by in-3.smtp.seeweb.it (Postfix) with ESMTPS id 46ED71A010EA for ; Tue, 7 Sep 2021 13:32:24 +0200 (CEST) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 7EC9C220E1 for ; Tue, 7 Sep 2021 11:32:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1631014343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=4xPlvPv9KjSKx80/s4u9adzU/wvnrSJ1krZVNjz2SaM=; b=F3q8xEk3qPJ0vlqpY3cJKqd0VNb0YJAqpymM54rki6OBPaWGKez8vD1Sl3HMOlWsfzJ8FQ lwK7qKoNvDfBzrC1VBx36SiAT19gnpMa55ufr6MySk03F1gsJXEtuPxXih808MNRPQz7aN 13vepKnSstnHyam17lanHpx0eRoFeaI= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1631014343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=4xPlvPv9KjSKx80/s4u9adzU/wvnrSJ1krZVNjz2SaM=; b=bnSO+/dntfSFPqMY9LEmlRR2hc359GYdof5tOehzGpE+uYqBGQO5vbEeG3Jecq8l2iQ5S/ x8xJiEohWcIYiFBQ== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 6C91913C59 for ; Tue, 7 Sep 2021 11:32:23 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id zjhPGcdNN2EyBQAAMHmgww (envelope-from ) for ; Tue, 07 Sep 2021 11:32:23 +0000 From: Martin Doucha To: ltp@lists.linux.it Date: Tue, 7 Sep 2021 13:32:18 +0200 Message-Id: <20210907113222.5156-1-mdoucha@suse.cz> X-Mailer: git-send-email 2.33.0 MIME-Version: 1.0 X-Virus-Scanned: clamav-milter 0.102.4 at in-3.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-3.smtp.seeweb.it Subject: [LTP] [PATCH v2 1/5] Add user/group ID lookup helper functions X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Signed-off-by: Martin Doucha --- Changes since v1: - Remove SAFE_GETPWENT() and SAFE_GETGRENT() - Generate linear sequence of IDs in tst_get_uid/gid() without checking whether the UID/GID exists - Add support for extending partially filled UID/GID buffer in tst_get_uid/gid() include/tst_uid.h | 9 +++++++++ lib/tst_uid.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/include/tst_uid.h b/include/tst_uid.h index 7135a9cad..b653d0a1e 100644 --- a/include/tst_uid.h +++ b/include/tst_uid.h @@ -15,4 +15,13 @@ gid_t tst_get_free_gid_(const char *file, const int lineno, gid_t skip); #define tst_get_free_gid(skip) tst_get_free_gid_(__FILE__, __LINE__, (skip)) +/* + * Get a specific number of unique existing non-root user or group IDs. + * The "start" parameter is the number of buffer entries that are already + * filled and will not be modified. The function will fill the remaining + * (size-start) entries with unique UID/GID values. + */ +void tst_get_uids(uid_t *buf, unsigned int start, unsigned int size); +void tst_get_gids(gid_t *buf, unsigned int start, unsigned int size); + #endif /* TST_UID_H_ */ diff --git a/lib/tst_uid.c b/lib/tst_uid.c index dd719d312..08855ba46 100644 --- a/lib/tst_uid.c +++ b/lib/tst_uid.c @@ -36,3 +36,35 @@ gid_t tst_get_free_gid_(const char *file, const int lineno, gid_t skip) tst_brk_(file, lineno, TBROK, "No free group ID found"); return (gid_t)-1; } + +void tst_get_uids(uid_t *buf, unsigned int start, unsigned int count) +{ + unsigned int i, j; + uid_t id; + + for (i = start, id = 1; i < count; id++) { + for (j = 0; j < start; j++) { + if (buf[j] == id) + break; + } + + if (j >= start) + buf[i++] = id; + } +} + +void tst_get_gids(gid_t *buf, unsigned int start, unsigned int count) +{ + unsigned int i, j; + gid_t id; + + for (i = start, id = 1; i < count; id++) { + for (j = 0; j < start; j++) { + if (buf[j] == id) + break; + } + + if (j >= start) + buf[i++] = id; + } +} From patchwork Tue Sep 7 11:32:19 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Doucha X-Patchwork-Id: 1525276 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=suse.cz header.i=@suse.cz header.a=rsa-sha256 header.s=susede2_rsa header.b=bYj1A/cc; dkim=fail reason="signature verification failed" header.d=suse.cz header.i=@suse.cz header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=OEtEEqRJ; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=213.254.12.146; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Received: from picard.linux.it (picard.linux.it [213.254.12.146]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4H3jml3ZDVz9sXk for ; Tue, 7 Sep 2021 21:32:39 +1000 (AEST) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 885A43C4E33 for ; Tue, 7 Sep 2021 13:32:36 +0200 (CEST) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-5.smtp.seeweb.it (in-5.smtp.seeweb.it [217.194.8.5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id 10ACE3C231C for ; Tue, 7 Sep 2021 13:32:25 +0200 (CEST) Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by in-5.smtp.seeweb.it (Postfix) with ESMTPS id 3E0DC600C97 for ; Tue, 7 Sep 2021 13:32:24 +0200 (CEST) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 966381FF72 for ; Tue, 7 Sep 2021 11:32:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1631014343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Bj4HvapsdhHQ0pekipTeU3ajfJCpC18wAn8QRoExi90=; b=bYj1A/ccecEooniYupBiTHTwsZ3+7ZhbEexnXoiFw1be7NOAVQ525qQHx+G6j6cNqfgY4m zrwK3akhpmhXqoY924bfT4IHKqO98QXaEldTzFeCLRP6PMAtrl3V0fu7Wja7UaisEbWzgr +EGRNM8dYm3ChcW5wOvpHPPAsWScYIc= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1631014343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Bj4HvapsdhHQ0pekipTeU3ajfJCpC18wAn8QRoExi90=; b=OEtEEqRJZ6kAJN3Z00xMZC5/iX6SKClBu6izR8J6JO1jGGhs1UvK0nxGKooGpOikRD/6i6 kKFfjGGGRGCLJ/AA== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 84A7013C59 for ; Tue, 7 Sep 2021 11:32:23 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id +AVbH8dNN2EyBQAAMHmgww (envelope-from ) for ; Tue, 07 Sep 2021 11:32:23 +0000 From: Martin Doucha To: ltp@lists.linux.it Date: Tue, 7 Sep 2021 13:32:19 +0200 Message-Id: <20210907113222.5156-2-mdoucha@suse.cz> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210907113222.5156-1-mdoucha@suse.cz> References: <20210907113222.5156-1-mdoucha@suse.cz> MIME-Version: 1.0 X-Virus-Scanned: clamav-milter 0.102.4 at in-5.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-5.smtp.seeweb.it Subject: [LTP] [PATCH v2 2/5] syscalls/kill05: Use any two unprivileged users X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Usernames such as "bin" may not exist on some systems. Find and use any two unprivileged user IDs for the test instead of specific named users. Includes minor code style cleanup in wait_for_flag(). Signed-off-by: Martin Doucha --- Changes since v1: Update to new tst_uid API testcases/kernel/syscalls/kill/kill05.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/testcases/kernel/syscalls/kill/kill05.c b/testcases/kernel/syscalls/kill/kill05.c index e694126f6..8ec71be49 100644 --- a/testcases/kernel/syscalls/kill/kill05.c +++ b/testcases/kernel/syscalls/kill/kill05.c @@ -24,8 +24,9 @@ #include "libnewipc.h" #include "tst_safe_sysv_ipc.h" #include "tst_safe_macros.h" +#include "tst_uid.h" -static uid_t nobody_uid, bin_uid; +static uid_t test_users[2]; static int *flag; static int shm_id = -1; static key_t shm_key; @@ -35,8 +36,8 @@ static void wait_for_flag(int value) while (1) { if (*flag == value) break; - else - usleep(100); + + usleep(100); } } @@ -47,14 +48,14 @@ static void do_master_child(void) *flag = 0; pid1 = SAFE_FORK(); if (pid1 == 0) { - SAFE_SETREUID(nobody_uid, nobody_uid); + SAFE_SETREUID(test_users[0], test_users[0]); *flag = 1; wait_for_flag(2); exit(0); } - SAFE_SETREUID(bin_uid, bin_uid); + SAFE_SETREUID(test_users[1], test_users[1]); wait_for_flag(1); TEST(kill(pid1, SIGKILL)); @@ -85,17 +86,10 @@ static void verify_kill(void) static void setup(void) { - struct passwd *pw; - shm_key = GETIPCKEY(); shm_id = SAFE_SHMGET(shm_key, getpagesize(), 0666 | IPC_CREAT); flag = SAFE_SHMAT(shm_id, 0, 0); - - pw = SAFE_GETPWNAM("nobody"); - nobody_uid = pw->pw_uid; - - pw = SAFE_GETPWNAM("bin"); - bin_uid = pw->pw_uid; + tst_get_uids(test_users, 0, 2); } static void cleanup(void) From patchwork Tue Sep 7 11:32:20 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Doucha X-Patchwork-Id: 1525283 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=suse.cz header.i=@suse.cz header.a=rsa-sha256 header.s=susede2_rsa header.b=ff4LhnA0; dkim=fail reason="signature verification failed" header.d=suse.cz header.i=@suse.cz header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=YfDoPPAY; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=2001:1418:10:5::2; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4H3jn76G1rz9sf8 for ; Tue, 7 Sep 2021 21:32:59 +1000 (AEST) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 173DD3C91CF for ; Tue, 7 Sep 2021 13:32:57 +0200 (CEST) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-5.smtp.seeweb.it (in-5.smtp.seeweb.it [IPv6:2001:4b78:1:20::5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id 61AEA3C05A0 for ; Tue, 7 Sep 2021 13:32:24 +0200 (CEST) Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by in-5.smtp.seeweb.it (Postfix) with ESMTPS id 49DA9600CFA for ; Tue, 7 Sep 2021 13:32:24 +0200 (CEST) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id ACB05220E2 for ; Tue, 7 Sep 2021 11:32:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1631014343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Zr0ya0iAdm/B+4BKD88qtNDG6HaYAn0UOWnoVsiziLw=; b=ff4LhnA09AVDTFd1VlxSrZev82Xrgw9pxmbGauudADcfPEE+8QxCXe8GkzH7l73PAEe5yb gYvbb3TVQZPCHAp3DO/ts3dLAiqbA/IJaDBoFfKbPEtSfl3CbY4cdag9eebcax+J70s9Vl i2nx3/R3loiTsdoTTTHKK0jxYSX8lJk= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1631014343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Zr0ya0iAdm/B+4BKD88qtNDG6HaYAn0UOWnoVsiziLw=; b=YfDoPPAYChd0OTyCLPiAdrv1uLdZJnntfF0cg3+RoJFUrruw0EKfmyGkzqPC2wB3m8R4fA wGjGD1uXhNlyGTDw== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 9AB1113C59 for ; Tue, 7 Sep 2021 11:32:23 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id sNXDJMdNN2EyBQAAMHmgww (envelope-from ) for ; Tue, 07 Sep 2021 11:32:23 +0000 From: Martin Doucha To: ltp@lists.linux.it Date: Tue, 7 Sep 2021 13:32:20 +0200 Message-Id: <20210907113222.5156-3-mdoucha@suse.cz> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210907113222.5156-1-mdoucha@suse.cz> References: <20210907113222.5156-1-mdoucha@suse.cz> MIME-Version: 1.0 X-Virus-Scanned: clamav-milter 0.102.4 at in-5.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-5.smtp.seeweb.it Subject: [LTP] [PATCH v2 3/5] syscalls/mkdir04: Simplify test and use any existing users X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" mkdir04 does not need to fork() in setup(). Usernames such as "bin" may not exist on some systems. Find and use any two unprivileged users instead of specific named users. Signed-off-by: Martin Doucha --- Changes since v1: Update to new tst_uid API testcases/kernel/syscalls/mkdir/mkdir04.c | 28 +++++------------------ 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/testcases/kernel/syscalls/mkdir/mkdir04.c b/testcases/kernel/syscalls/mkdir/mkdir04.c index 87512a4be..bc060f3b5 100644 --- a/testcases/kernel/syscalls/mkdir/mkdir04.c +++ b/testcases/kernel/syscalls/mkdir/mkdir04.c @@ -8,19 +8,14 @@ */ #include -#include #include #include -#include -#include -#include #include "tst_test.h" +#include "tst_uid.h" #define TESTDIR "testdir" #define TESTSUBDIR "testdir/testdir" -static uid_t nobody_uid, bin_uid; - static void verify_mkdir(void) { if (mkdir(TESTSUBDIR, 0777) != -1) { @@ -39,24 +34,14 @@ static void verify_mkdir(void) static void setup(void) { - struct passwd *pw; - pid_t pid; - - pw = SAFE_GETPWNAM("nobody"); - nobody_uid = pw->pw_uid; - pw = SAFE_GETPWNAM("bin"); - bin_uid = pw->pw_uid; + uid_t test_users[2]; - pid = SAFE_FORK(); - if (pid == 0) { - SAFE_SETREUID(nobody_uid, nobody_uid); - SAFE_MKDIR(TESTDIR, 0700); - exit(0); - } + tst_get_uids(test_users, 0, 2); - tst_reap_children(); + SAFE_MKDIR(TESTDIR, 0700); + SAFE_CHOWN(TESTDIR, test_users[0], getgid()); - SAFE_SETREUID(bin_uid, bin_uid); + SAFE_SETREUID(test_users[1], test_users[1]); } static struct tst_test test = { @@ -64,5 +49,4 @@ static struct tst_test test = { .needs_tmpdir = 1, .needs_root = 1, .setup = setup, - .forks_child = 1, }; From patchwork Tue Sep 7 11:32:21 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Doucha X-Patchwork-Id: 1525277 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=suse.cz header.i=@suse.cz header.a=rsa-sha256 header.s=susede2_rsa header.b=BQGeIcXJ; dkim=fail reason="signature verification failed" header.d=suse.cz header.i=@suse.cz header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=uUV8lwDu; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=2001:1418:10:5::2; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4H3jmx2qpWz9sf8 for ; Tue, 7 Sep 2021 21:32:49 +1000 (AEST) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 2B53D3C91B9 for ; Tue, 7 Sep 2021 13:32:46 +0200 (CEST) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-5.smtp.seeweb.it (in-5.smtp.seeweb.it [217.194.8.5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id 224113C05A0 for ; Tue, 7 Sep 2021 13:32:25 +0200 (CEST) Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by in-5.smtp.seeweb.it (Postfix) with ESMTPS id 482AA600CF8 for ; Tue, 7 Sep 2021 13:32:24 +0200 (CEST) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id C811E220E6 for ; Tue, 7 Sep 2021 11:32:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1631014343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=znvsJUoL4A7bxBPbKUJ/KrLocK3J8K+g8rMZR1NokDk=; b=BQGeIcXJgE5EQFpT5Yjq+tH02tD6MCXqK+itYERf6Yw3P0ZyIT/H7gqnvjjHTYQhYFZTma lDFP72czWqgmHSkAVp0EEgYoqGDM1gnca6C6IhAWiyMWivABCXpxKEpVknrq5Rv3MYwXmI dSEl7i01sYzn6XOcKfrI1kNtzdCih5E= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1631014343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=znvsJUoL4A7bxBPbKUJ/KrLocK3J8K+g8rMZR1NokDk=; b=uUV8lwDu+0Klft2Pl195m1c7bNoO74nB4LjJ1yXbyZXGCcxTaCaeLph3dfO582abvRGY87 6L2FnYqRj8KRglBg== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id B2AC213C59 for ; Tue, 7 Sep 2021 11:32:23 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id QORvKsdNN2EyBQAAMHmgww (envelope-from ) for ; Tue, 07 Sep 2021 11:32:23 +0000 From: Martin Doucha To: ltp@lists.linux.it Date: Tue, 7 Sep 2021 13:32:21 +0200 Message-Id: <20210907113222.5156-4-mdoucha@suse.cz> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210907113222.5156-1-mdoucha@suse.cz> References: <20210907113222.5156-1-mdoucha@suse.cz> MIME-Version: 1.0 X-Virus-Scanned: clamav-milter 0.102.4 at in-5.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-5.smtp.seeweb.it Subject: [LTP] [PATCH v2 4/5] syscalls/setregid02-04: Simplify GID handling X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Signed-off-by: Martin Doucha --- Changes since v1: None .../kernel/syscalls/setregid/setregid02.c | 48 +++++++--------- .../kernel/syscalls/setregid/setregid03.c | 57 ++++++++----------- .../kernel/syscalls/setregid/setregid04.c | 42 +++++++------- 3 files changed, 61 insertions(+), 86 deletions(-) diff --git a/testcases/kernel/syscalls/setregid/setregid02.c b/testcases/kernel/syscalls/setregid/setregid02.c index 310eb3a21..2174f81f9 100644 --- a/testcases/kernel/syscalls/setregid/setregid02.c +++ b/testcases/kernel/syscalls/setregid/setregid02.c @@ -19,12 +19,10 @@ #include "tst_test.h" #include "compat_tst_16.h" -static gid_t neg_one = -1; +static gid_t root_gid, nobody_gid, other_gid, neg_one = -1; static struct passwd *ltpuser; -static struct group ltpgroup, root, bin; - /* * The following structure contains all test data. Each structure in the array * is used for a separate test. The tests are executed in the for loop below. @@ -34,50 +32,41 @@ static struct tcase { gid_t *real_gid; gid_t *eff_gid; int exp_errno; - struct group *exp_real_usr; - struct group *exp_eff_usr; + gid_t *exp_real_usr; + gid_t *exp_eff_usr; char *test_msg; } tcases[] = { { - &neg_one, &root.gr_gid, EPERM, <pgroup, <pgroup, + &neg_one, &root_gid, EPERM, &nobody_gid, &nobody_gid, "After setregid(-1, root),"}, { - &neg_one, &bin.gr_gid, EPERM, <pgroup, <pgroup, + &neg_one, &other_gid, EPERM, &nobody_gid, &nobody_gid, "After setregid(-1, bin)"}, { - &root.gr_gid, &neg_one, EPERM, <pgroup, <pgroup, + &root_gid, &neg_one, EPERM, &nobody_gid, &nobody_gid, "After setregid(root,-1),"}, { - &bin.gr_gid, &neg_one, EPERM, <pgroup, <pgroup, + &other_gid, &neg_one, EPERM, &nobody_gid, &nobody_gid, "After setregid(bin, -1),"}, { - &root.gr_gid, &bin.gr_gid, EPERM, <pgroup, <pgroup, + &root_gid, &other_gid, EPERM, &nobody_gid, &nobody_gid, "After setregid(root, bin)"}, { - &bin.gr_gid, &root.gr_gid, EPERM, <pgroup, <pgroup, + &other_gid, &root_gid, EPERM, &nobody_gid, &nobody_gid, "After setregid(bin, root),"} }; -static struct group get_group_by_name(const char *name) +static gid_t get_group_by_name(const char *name) { struct group *ret = SAFE_GETGRNAM(name); GID16_CHECK(ret->gr_gid, setregid); - return *ret; -} - -static struct group get_group_by_gid(gid_t gid) -{ - struct group *ret = SAFE_GETGRGID(gid); - - GID16_CHECK(ret->gr_gid, setregid); - - return *ret; + return ret->gr_gid; } -void gid_verify(struct group *rg, struct group *eg, char *when) +void gid_verify(gid_t rg, gid_t eg, char *when) { - if ((getgid() != rg->gr_gid) || (getegid() != eg->gr_gid)) { + if ((getgid() != rg) || (getegid() != eg)) { tst_res(TFAIL, "ERROR: %s real gid = %d; effective gid = %d", when, getgid(), getegid()); tst_res(TINFO, "Expected: real gid = %d; effective gid = %d", - rg->gr_gid, eg->gr_gid); + rg, eg); return; } @@ -107,7 +96,7 @@ static void run(unsigned int n) "setregid(%d, %d) did not fail (ret: %ld) as expected (ret: -1).", *tc->real_gid, *tc->eff_gid, TST_RET); } - gid_verify(tc->exp_real_usr, tc->exp_eff_usr, tc->test_msg); + gid_verify(*tc->exp_real_usr, *tc->exp_eff_usr, tc->test_msg); } static void setup(void) @@ -117,9 +106,10 @@ static void setup(void) SAFE_SETGID(ltpuser->pw_gid); SAFE_SETUID(ltpuser->pw_uid); - root = get_group_by_name("root"); - ltpgroup = get_group_by_gid(ltpuser->pw_gid); - bin = get_group_by_name("bin"); + nobody_gid = ltpuser->pw_gid; + GID16_CHECK(nobody_gid, setregid); + root_gid = get_group_by_name("root"); + other_gid = get_group_by_name("bin"); } static struct tst_test test = { diff --git a/testcases/kernel/syscalls/setregid/setregid03.c b/testcases/kernel/syscalls/setregid/setregid03.c index e25a7ec72..35aa92b8e 100644 --- a/testcases/kernel/syscalls/setregid/setregid03.c +++ b/testcases/kernel/syscalls/setregid/setregid03.c @@ -16,72 +16,61 @@ static int fail = -1; static int pass; -static gid_t neg_one = -1; +static gid_t primary_gid, secondary_gid, neg_one = -1; -struct group nobody_gr, daemon_gr, root_gr, bin_gr; struct passwd nobody; struct tcase { gid_t *real_gid; gid_t *eff_gid; int *exp_ret; - struct group *exp_real_usr; - struct group *exp_eff_usr; + gid_t *exp_real_usr; + gid_t *exp_eff_usr; char *test_msg; } tcases[] = { { - &daemon_gr.gr_gid, &bin_gr.gr_gid, &pass, &daemon_gr, &bin_gr, + &primary_gid, &secondary_gid, &pass, &primary_gid, &secondary_gid, "After setregid(daemon, bin),"}, { - &neg_one, &daemon_gr.gr_gid, &pass, &daemon_gr, &daemon_gr, + &neg_one, &primary_gid, &pass, &primary_gid, &primary_gid, "After setregid(-1, daemon)"}, { - &neg_one, &bin_gr.gr_gid, &pass, &daemon_gr, &bin_gr, + &neg_one, &secondary_gid, &pass, &primary_gid, &secondary_gid, "After setregid(-1, bin),"}, { - &bin_gr.gr_gid, &neg_one, &pass, &bin_gr, &bin_gr, + &secondary_gid, &neg_one, &pass, &secondary_gid, &secondary_gid, "After setregid(bin, -1),"}, { - &neg_one, &neg_one, &pass, &bin_gr, &bin_gr, + &neg_one, &neg_one, &pass, &secondary_gid, &secondary_gid, "After setregid(-1, -1),"}, { - &neg_one, &bin_gr.gr_gid, &pass, &bin_gr, &bin_gr, + &neg_one, &secondary_gid, &pass, &secondary_gid, &secondary_gid, "After setregid(-1, bin),"}, { - &bin_gr.gr_gid, &neg_one, &pass, &bin_gr, &bin_gr, + &secondary_gid, &neg_one, &pass, &secondary_gid, &secondary_gid, "After setregid(bin, -1),"}, { - &bin_gr.gr_gid, &bin_gr.gr_gid, &pass, &bin_gr, &bin_gr, + &secondary_gid, &secondary_gid, &pass, &secondary_gid, &secondary_gid, "After setregid(bin, bin),"}, { - &daemon_gr.gr_gid, &neg_one, &fail, &bin_gr, &bin_gr, + &primary_gid, &neg_one, &fail, &secondary_gid, &secondary_gid, "After setregid(daemon, -1)"}, { - &neg_one, &daemon_gr.gr_gid, &fail, &bin_gr, &bin_gr, + &neg_one, &primary_gid, &fail, &secondary_gid, &secondary_gid, "After setregid(-1, daemon)"}, { - &daemon_gr.gr_gid, &daemon_gr.gr_gid, &fail, &bin_gr, &bin_gr, + &primary_gid, &primary_gid, &fail, &secondary_gid, &secondary_gid, "After setregid(daemon, daemon)"},}; -static struct group get_group_fallback(const char *gr1, const char *gr2) -{ - struct group *junk; - - junk = SAFE_GETGRNAM_FALLBACK(gr1, gr2); - GID16_CHECK(junk->gr_gid, setregid); - return *junk; -} - -static struct group get_group(const char *group) +static gid_t get_group(const char *group) { struct group *junk; junk = SAFE_GETGRNAM(group); GID16_CHECK(junk->gr_gid, setregid); - return *junk; + return junk->gr_gid; } static void setup(void) { nobody = *SAFE_GETPWNAM("nobody"); - nobody_gr = get_group_fallback("nobody", "nogroup"); - daemon_gr = get_group("daemon"); - bin_gr = get_group("bin"); + primary_gid = get_group("daemon"); + secondary_gid = get_group("bin"); /* set the appropriate ownership values */ - SAFE_SETREGID(daemon_gr.gr_gid, bin_gr.gr_gid); + SAFE_SETREGID(primary_gid, secondary_gid); SAFE_SETEUID(nobody.pw_uid); } @@ -109,13 +98,13 @@ static void test_failure(struct tcase *tc) *tc->real_gid, *tc->eff_gid); } -static void gid_verify(struct group *rg, struct group *eg, char *when) +static void gid_verify(gid_t rg, gid_t eg, char *when) { - if ((getgid() != rg->gr_gid) || (getegid() != eg->gr_gid)) { + if ((getgid() != rg) || (getegid() != eg)) { tst_res(TFAIL, "ERROR: %s real gid = %d; effective gid = %d", when, getgid(), getegid()); tst_res(TINFO, "Expected: real gid = %d; effective gid = %d", - rg->gr_gid, eg->gr_gid); + rg, eg); } else { tst_res(TPASS, "real or effective gid was modified as expected"); @@ -134,7 +123,7 @@ static void run(unsigned int i) else test_failure(tc); - gid_verify(tc->exp_real_usr, tc->exp_eff_usr, tc->test_msg); + gid_verify(*tc->exp_real_usr, *tc->exp_eff_usr, tc->test_msg); } void run_all(void) diff --git a/testcases/kernel/syscalls/setregid/setregid04.c b/testcases/kernel/syscalls/setregid/setregid04.c index 9490ae173..6b9e3f524 100644 --- a/testcases/kernel/syscalls/setregid/setregid04.c +++ b/testcases/kernel/syscalls/setregid/setregid04.c @@ -12,9 +12,7 @@ #include "tst_test.h" #include "compat_tst_16.h" -static gid_t neg_one = -1; - -static struct group nobody_gr, daemon_gr, root_gr, bin_gr; +static gid_t first_gid, second_gid, root_gid, neg_one = -1; /* * The following structure contains all test data. Each structure in the array @@ -24,45 +22,44 @@ static struct group nobody_gr, daemon_gr, root_gr, bin_gr; struct test_data_t { gid_t *real_gid; gid_t *eff_gid; - struct group *exp_real_usr; - struct group *exp_eff_usr; + gid_t *exp_real_usr; + gid_t *exp_eff_usr; const char *test_msg; } test_data[] = { { - &root_gr.gr_gid, &root_gr.gr_gid, &root_gr, &root_gr, + &root_gid, &root_gid, &root_gid, &root_gid, "After setregid(root, root),"}, { - &nobody_gr.gr_gid, &neg_one, &nobody_gr, &root_gr, + &first_gid, &neg_one, &first_gid, &root_gid, "After setregid(nobody, -1)"}, { - &root_gr.gr_gid, &neg_one, &root_gr, &root_gr, + &root_gid, &neg_one, &root_gid, &root_gid, "After setregid(root,-1),"}, { - &neg_one, &neg_one, &root_gr, &root_gr, + &neg_one, &neg_one, &root_gid, &root_gid, "After setregid(-1, -1),"}, { - &neg_one, &root_gr.gr_gid, &root_gr, &root_gr, + &neg_one, &root_gid, &root_gid, &root_gid, "After setregid(-1, root)"}, { - &root_gr.gr_gid, &neg_one, &root_gr, &root_gr, + &root_gid, &neg_one, &root_gid, &root_gid, "After setregid(root, -1),"}, { - &daemon_gr.gr_gid, &nobody_gr.gr_gid, &daemon_gr, &nobody_gr, + &second_gid, &first_gid, &second_gid, &first_gid, "After setregid(daemon, nobody)"}, { - &neg_one, &neg_one, &daemon_gr, &nobody_gr, + &neg_one, &neg_one, &second_gid, &first_gid, "After setregid(-1, -1)"}, { - &neg_one, &nobody_gr.gr_gid, &daemon_gr, &nobody_gr, + &neg_one, &first_gid, &second_gid, &first_gid, "After setregid(-1, nobody)"} }; -static void gid_verify(struct group *rg, struct group *eg, const char *when) +static void gid_verify(gid_t rg, gid_t eg, const char *when) { - if ((getgid() != rg->gr_gid) || (getegid() != eg->gr_gid)) { + if ((getgid() != rg) || (getegid() != eg)) { tst_res(TFAIL, "ERROR: %s real gid = %d; effective gid = %d", when, getgid(), getegid()); tst_res(TINFO, "Expected: real gid = %d; effective gid = %d", - rg->gr_gid, eg->gr_gid); + rg, eg); } else { tst_res(TPASS, "real or effective gid was modified as expected"); } } - static void run(unsigned int i) { /* Set the real or effective group id */ @@ -74,16 +71,15 @@ static void run(unsigned int i) return; } - gid_verify(test_data[i].exp_real_usr, test_data[i].exp_eff_usr, + gid_verify(*test_data[i].exp_real_usr, *test_data[i].exp_eff_usr, test_data[i].test_msg); } static void setup(void) { - root_gr = *SAFE_GETGRNAM("root"); - nobody_gr = *SAFE_GETGRNAM_FALLBACK("nobody", "nogroup"); - daemon_gr = *SAFE_GETGRNAM("daemon"); - bin_gr = *SAFE_GETGRNAM("bin"); + root_gid = SAFE_GETGRNAM("root")->gr_gid; + first_gid = SAFE_GETGRNAM_FALLBACK("nobody", "nogroup")->gr_gid; + second_gid = SAFE_GETGRNAM("daemon")->gr_gid; } static struct tst_test test = { From patchwork Tue Sep 7 11:32:22 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Martin Doucha X-Patchwork-Id: 1525285 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=suse.cz header.i=@suse.cz header.a=rsa-sha256 header.s=susede2_rsa header.b=iRaisOLK; dkim=fail reason="signature verification failed" header.d=suse.cz header.i=@suse.cz header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=qgRKysNS; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=2001:1418:10:5::2; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4H3jnM20zWz9sf8 for ; Tue, 7 Sep 2021 21:33:11 +1000 (AEST) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 7CA093C2453 for ; Tue, 7 Sep 2021 13:33:08 +0200 (CEST) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-3.smtp.seeweb.it (in-3.smtp.seeweb.it [IPv6:2001:4b78:1:20::3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id 4D35D3C05A0 for ; Tue, 7 Sep 2021 13:32:25 +0200 (CEST) Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by in-3.smtp.seeweb.it (Postfix) with ESMTPS id 5E47F1A010ED for ; Tue, 7 Sep 2021 13:32:24 +0200 (CEST) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id EE4D71FF73 for ; Tue, 7 Sep 2021 11:32:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1631014343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=uhocCpM9RNaF1SFakOabsIqX1gAARVGy1Pik7LkrYBc=; b=iRaisOLKH1Wl/b9M1a6Gv5HXWiY+2YanV9wKSSHgeGYVfyf9q1x//OQPy0UNfK8Wnx6Gex RD49l3TN0z0q/0piJ23zcADpW6WedL31aGg9DSq0iFettv31J6S6oIWWEnstNnIUT+msRu CVzLF1pRfZWVHhluQQ73+GDRCJJ9xEU= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1631014343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=uhocCpM9RNaF1SFakOabsIqX1gAARVGy1Pik7LkrYBc=; b=qgRKysNSUbuW15pxN/RObOQnB/NPiEpzG8tOmhRN4mPimFAfQz1ni/5bSaxBgirCGXauwy c1Uhp85rsQvanPBw== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id CCC0413C6F for ; Tue, 7 Sep 2021 11:32:23 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id mDL/MMdNN2EyBQAAMHmgww (envelope-from ) for ; Tue, 07 Sep 2021 11:32:23 +0000 From: Martin Doucha To: ltp@lists.linux.it Date: Tue, 7 Sep 2021 13:32:22 +0200 Message-Id: <20210907113222.5156-5-mdoucha@suse.cz> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210907113222.5156-1-mdoucha@suse.cz> References: <20210907113222.5156-1-mdoucha@suse.cz> MIME-Version: 1.0 X-Virus-Scanned: clamav-milter 0.102.4 at in-3.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-3.smtp.seeweb.it Subject: [LTP] [PATCH v2 5/5] syscalls/setregid02-04: Eliminate named group lookups X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Group names like "bin" or "daemon" may not exist on some systems. Find and use any unprivieged group IDs instead of specific named groups. Signed-off-by: Martin Doucha --- Changes since v1: Update to new tst_uid API .../kernel/syscalls/setregid/setregid02.c | 33 +++++++-------- .../kernel/syscalls/setregid/setregid03.c | 40 +++++++++---------- .../kernel/syscalls/setregid/setregid04.c | 16 +++++--- 3 files changed, 43 insertions(+), 46 deletions(-) diff --git a/testcases/kernel/syscalls/setregid/setregid02.c b/testcases/kernel/syscalls/setregid/setregid02.c index 2174f81f9..0210f485a 100644 --- a/testcases/kernel/syscalls/setregid/setregid02.c +++ b/testcases/kernel/syscalls/setregid/setregid02.c @@ -17,6 +17,7 @@ #include #include "tst_test.h" +#include "tst_uid.h" #include "compat_tst_16.h" static gid_t root_gid, nobody_gid, other_gid, neg_one = -1; @@ -40,26 +41,17 @@ static struct tcase { &neg_one, &root_gid, EPERM, &nobody_gid, &nobody_gid, "After setregid(-1, root),"}, { &neg_one, &other_gid, EPERM, &nobody_gid, &nobody_gid, - "After setregid(-1, bin)"}, { + "After setregid(-1, other)"}, { &root_gid, &neg_one, EPERM, &nobody_gid, &nobody_gid, "After setregid(root,-1),"}, { &other_gid, &neg_one, EPERM, &nobody_gid, &nobody_gid, - "After setregid(bin, -1),"}, { + "After setregid(other, -1),"}, { &root_gid, &other_gid, EPERM, &nobody_gid, &nobody_gid, - "After setregid(root, bin)"}, { + "After setregid(root, other)"}, { &other_gid, &root_gid, EPERM, &nobody_gid, &nobody_gid, - "After setregid(bin, root),"} + "After setregid(other, root),"} }; -static gid_t get_group_by_name(const char *name) -{ - struct group *ret = SAFE_GETGRNAM(name); - - GID16_CHECK(ret->gr_gid, setregid); - - return ret->gr_gid; -} - void gid_verify(gid_t rg, gid_t eg, char *when) { if ((getgid() != rg) || (getegid() != eg)) { @@ -101,15 +93,20 @@ static void run(unsigned int n) static void setup(void) { + gid_t test_groups[3]; + ltpuser = SAFE_GETPWNAM("nobody"); + nobody_gid = test_groups[0] = ltpuser->pw_gid; + root_gid = test_groups[1] = getgid(); + tst_get_gids(test_groups, 2, 3); + other_gid = test_groups[2]; + + GID16_CHECK(root_gid, setregid); + GID16_CHECK(nobody_gid, setregid); + GID16_CHECK(other_gid, setregid); SAFE_SETGID(ltpuser->pw_gid); SAFE_SETUID(ltpuser->pw_uid); - - nobody_gid = ltpuser->pw_gid; - GID16_CHECK(nobody_gid, setregid); - root_gid = get_group_by_name("root"); - other_gid = get_group_by_name("bin"); } static struct tst_test test = { diff --git a/testcases/kernel/syscalls/setregid/setregid03.c b/testcases/kernel/syscalls/setregid/setregid03.c index 35aa92b8e..334aceb04 100644 --- a/testcases/kernel/syscalls/setregid/setregid03.c +++ b/testcases/kernel/syscalls/setregid/setregid03.c @@ -12,6 +12,7 @@ #include #include "tst_test.h" +#include "tst_uid.h" #include "compat_tst_16.h" static int fail = -1; @@ -30,44 +31,39 @@ struct tcase { } tcases[] = { { &primary_gid, &secondary_gid, &pass, &primary_gid, &secondary_gid, - "After setregid(daemon, bin),"}, { + "After setregid(primary, secondary),"}, { &neg_one, &primary_gid, &pass, &primary_gid, &primary_gid, - "After setregid(-1, daemon)"}, { + "After setregid(-1, primary)"}, { &neg_one, &secondary_gid, &pass, &primary_gid, &secondary_gid, - "After setregid(-1, bin),"}, { + "After setregid(-1, secondary),"}, { &secondary_gid, &neg_one, &pass, &secondary_gid, &secondary_gid, - "After setregid(bin, -1),"}, { + "After setregid(secondary, -1),"}, { &neg_one, &neg_one, &pass, &secondary_gid, &secondary_gid, "After setregid(-1, -1),"}, { &neg_one, &secondary_gid, &pass, &secondary_gid, &secondary_gid, - "After setregid(-1, bin),"}, { + "After setregid(-1, secondary),"}, { &secondary_gid, &neg_one, &pass, &secondary_gid, &secondary_gid, - "After setregid(bin, -1),"}, { + "After setregid(secondary, -1),"}, { &secondary_gid, &secondary_gid, &pass, &secondary_gid, &secondary_gid, - "After setregid(bin, bin),"}, { + "After setregid(secondary, secondary),"}, { &primary_gid, &neg_one, &fail, &secondary_gid, &secondary_gid, - "After setregid(daemon, -1)"}, { + "After setregid(primary, -1)"}, { &neg_one, &primary_gid, &fail, &secondary_gid, &secondary_gid, - "After setregid(-1, daemon)"}, { + "After setregid(-1, primary)"}, { &primary_gid, &primary_gid, &fail, &secondary_gid, &secondary_gid, - "After setregid(daemon, daemon)"},}; - - -static gid_t get_group(const char *group) -{ - struct group *junk; - - junk = SAFE_GETGRNAM(group); - GID16_CHECK(junk->gr_gid, setregid); - return junk->gr_gid; -} + "After setregid(primary, primary)"},}; static void setup(void) { + gid_t test_groups[2]; + nobody = *SAFE_GETPWNAM("nobody"); - primary_gid = get_group("daemon"); - secondary_gid = get_group("bin"); + tst_get_gids(test_groups, 0, 2); + primary_gid = test_groups[0]; + secondary_gid = test_groups[1]; + GID16_CHECK(primary_gid, setregid); + GID16_CHECK(secondary_gid, setregid); /* set the appropriate ownership values */ SAFE_SETREGID(primary_gid, secondary_gid); diff --git a/testcases/kernel/syscalls/setregid/setregid04.c b/testcases/kernel/syscalls/setregid/setregid04.c index 6b9e3f524..dbeb98ae6 100644 --- a/testcases/kernel/syscalls/setregid/setregid04.c +++ b/testcases/kernel/syscalls/setregid/setregid04.c @@ -10,6 +10,7 @@ */ #include "tst_test.h" +#include "tst_uid.h" #include "compat_tst_16.h" static gid_t first_gid, second_gid, root_gid, neg_one = -1; @@ -30,7 +31,7 @@ struct test_data_t { &root_gid, &root_gid, &root_gid, &root_gid, "After setregid(root, root),"}, { &first_gid, &neg_one, &first_gid, &root_gid, - "After setregid(nobody, -1)"}, { + "After setregid(first, -1)"}, { &root_gid, &neg_one, &root_gid, &root_gid, "After setregid(root,-1),"}, { &neg_one, &neg_one, &root_gid, &root_gid, @@ -40,11 +41,11 @@ struct test_data_t { &root_gid, &neg_one, &root_gid, &root_gid, "After setregid(root, -1),"}, { &second_gid, &first_gid, &second_gid, &first_gid, - "After setregid(daemon, nobody)"}, { + "After setregid(second, first)"}, { &neg_one, &neg_one, &second_gid, &first_gid, "After setregid(-1, -1)"}, { &neg_one, &first_gid, &second_gid, &first_gid, - "After setregid(-1, nobody)"} + "After setregid(-1, first)"} }; static void gid_verify(gid_t rg, gid_t eg, const char *when) @@ -77,9 +78,12 @@ static void run(unsigned int i) static void setup(void) { - root_gid = SAFE_GETGRNAM("root")->gr_gid; - first_gid = SAFE_GETGRNAM_FALLBACK("nobody", "nogroup")->gr_gid; - second_gid = SAFE_GETGRNAM("daemon")->gr_gid; + gid_t test_groups[3]; + + root_gid = test_groups[0] = getgid(); + tst_get_gids(test_groups, 1, 3); + first_gid = test_groups[1]; + second_gid = test_groups[2]; } static struct tst_test test = {