From patchwork Mon Sep 10 14:19:01 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Clemens Famulla-Conrad X-Patchwork-Id: 968063 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) 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=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=suse.de Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4289Cy1Pypz9s3Z for ; Tue, 11 Sep 2018 00:19:42 +1000 (AEST) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 893893E62E0 for ; Mon, 10 Sep 2018 16:19:39 +0200 (CEST) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-7.smtp.seeweb.it (in-7.smtp.seeweb.it [IPv6:2001:4b78:1:20::7]) by picard.linux.it (Postfix) with ESMTP id 403F03E62B7 for ; Mon, 10 Sep 2018 16:19:27 +0200 (CEST) Received: from mx1.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by in-7.smtp.seeweb.it (Postfix) with ESMTPS id D9CD52010A7 for ; Mon, 10 Sep 2018 16:19:26 +0200 (CEST) Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 7EA50B007 for ; Mon, 10 Sep 2018 14:19:26 +0000 (UTC) From: Clemens Famulla-Conrad To: ltp@lists.linux.it Date: Mon, 10 Sep 2018 16:19:01 +0200 Message-Id: <20180910141901.20541-5-cfamullaconrad@suse.de> X-Mailer: git-send-email 2.16.4 In-Reply-To: <20180910141901.20541-1-cfamullaconrad@suse.de> References: <20180910141901.20541-1-cfamullaconrad@suse.de> X-Virus-Scanned: clamav-milter 0.99.2 at in-7.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=-0.0 required=7.0 tests=SPF_PASS autolearn=disabled version=3.4.0 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on in-7.smtp.seeweb.it Subject: [LTP] [PATCH v2 5/5] setregid04: Convert to newlib X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.18 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Signed-off-by: Clemens Famulla-Conrad --- testcases/kernel/syscalls/setregid/setregid04.c | 116 ++++++------------------ 1 file changed, 27 insertions(+), 89 deletions(-) diff --git a/testcases/kernel/syscalls/setregid/setregid04.c b/testcases/kernel/syscalls/setregid/setregid04.c index bf744ff05..e0f1853a1 100644 --- a/testcases/kernel/syscalls/setregid/setregid04.c +++ b/testcases/kernel/syscalls/setregid/setregid04.c @@ -1,20 +1,7 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (c) International Business Machines Corp., 2001 * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See - * the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * * Ported by John George */ @@ -22,16 +9,8 @@ * Test setregid() when executed by root. */ -#include -#include -#include -#include -#include - -#include "test.h" -#include "compat_16.h" - -TCID_DEFINE(setregid04); +#include "tst_test.h" +#include "compat_tst_16.h" static gid_t neg_one = -1; @@ -70,88 +49,47 @@ struct test_data_t { "After setregid(-1, nobody)"} }; -int TST_TOTAL = sizeof(test_data) / sizeof(test_data[0]); - static void setup(void); -static void cleanup(void); static void gid_verify(struct group *ru, struct group *eu, const char *when); -int main(int ac, char **av) +static void run(unsigned int i) { - int lc; + /* Set the real or effective group id */ + TEST(SETREGID(*test_data[i].real_gid, *test_data[i].eff_gid)); - tst_parse_opts(ac, av, NULL, NULL); - - setup(); - - for (lc = 0; TEST_LOOPING(lc); lc++) { - int i; - - tst_count = 0; - - for (i = 0; i < TST_TOTAL; i++) { - /* Set the real or effective group id */ - TEST(SETREGID(cleanup, *test_data[i].real_gid, - *test_data[i].eff_gid)); - - if (TEST_RETURN == -1) { - tst_resm(TBROK, "setregid(%d, %d) failed", - *test_data[i].real_gid, - *test_data[i].eff_gid); - } else { - gid_verify(test_data[i].exp_real_usr, - test_data[i].exp_eff_usr, - test_data[i].test_msg); - } - } + if (TST_RET == -1) { + tst_res(TBROK | TTERRNO, "setregid(%d, %d) failed", + *test_data[i].real_gid, *test_data[i].eff_gid); + } else { + gid_verify(test_data[i].exp_real_usr, test_data[i].exp_eff_usr, + test_data[i].test_msg); } - - cleanup(); - tst_exit(); } -#define SAFE_GETGROUP(GROUPNAME) \ - if (getgrnam(#GROUPNAME) == NULL) { \ - tst_brkm(TBROK, NULL, "Couldn't find the `" #GROUPNAME "' group"); \ - } \ - GROUPNAME ## _gr = *(getgrnam(#GROUPNAME)); - -#define SAFE_GETGROUP_FALLBACK(GROUPNAME, GROUPNAME2) \ - if (getgrnam(#GROUPNAME) != NULL) \ - GROUPNAME ## _gr = *(getgrnam(#GROUPNAME)); \ - else if (getgrnam(#GROUPNAME2) != NULL) { \ - GROUPNAME ## _gr = *(getgrnam(#GROUPNAME2)); \ - tst_resm(TINFO, "`" #GROUPNAME "' group not found, trying fallback `" #GROUPNAME2 "' group"); \ - } else \ - tst_brkm(TBROK, NULL, "Couldn't find neither`" #GROUPNAME "' `" #GROUPNAME2 "' nor group"); - static void setup(void) { - tst_require_root(); - - tst_sig(FORK, DEF_HANDLER, cleanup); - - SAFE_GETGROUP(root); - SAFE_GETGROUP_FALLBACK(nobody, nogroup); - SAFE_GETGROUP(daemon); - SAFE_GETGROUP(bin); - - TEST_PAUSE; -} - -static void cleanup(void) -{ + root_gr = *SAFE_GETGRNAM("root"); + nobody_gr = *SAFE_GETGRNAM_FALLBACK("nobody", "nogroup"); + daemon_gr = *SAFE_GETGRNAM("daemon"); + bin_gr = *SAFE_GETGRNAM("bin"); } static void gid_verify(struct group *rg, struct group *eg, const char *when) { if ((getgid() != rg->gr_gid) || (getegid() != eg->gr_gid)) { - tst_resm(TFAIL, "ERROR: %s real gid = %d; effective gid = %d", + tst_res(TFAIL, "ERROR: %s real gid = %d; effective gid = %d", when, getgid(), getegid()); - tst_resm(TINFO, "Expected: real gid = %d; effective gid = %d", + tst_res(TINFO, "Expected: real gid = %d; effective gid = %d", rg->gr_gid, eg->gr_gid); } else { - tst_resm(TPASS, "real or effective gid was modified as " - "expected"); + tst_res(TPASS, + "real or effective gid was modified as expected"); } } + +static struct tst_test test = { + .tcnt = ARRAY_SIZE(test_data), + .needs_root = 1, + .test = run, + .setup = setup, +};