From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from bird.elm.relay.mailchannels.net (bird.elm.relay.mailchannels.net [23.83.212.17]) by sourceware.org (Postfix) with ESMTPS id C6315385800A for ; Tue, 13 Jun 2023 14:16:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C6315385800A Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=gotplt.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gotplt.org X-Sender-Id: dreamhost|x-authsender|siddhesh@gotplt.org Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id 59F2C342DAD; Tue, 13 Jun 2023 14:16:13 +0000 (UTC) Received: from pdx1-sub0-mail-a295.dreamhost.com (unknown [127.0.0.6]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 9B7E4342D82; Tue, 13 Jun 2023 14:16:11 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1686665771; a=rsa-sha256; cv=none; b=EZJkJEN8pckDIuJ5GTv4YDTgpBSQN6kK0p89ncrNQKmRnKylGNqMcG5Ipo+Qn+d0kAbkiV HnSQvCYe09LqE/9KvTNNwNtls7njrCdB81FOurfSNkrXmpOd8aNfn0D7BxtVmVA4iojjXI zQSpfXmWA6hxXWVOEQMHA7r3TuUyLepH1v9LFxvIMFtLwSwJPvd3Up+1bv11uXKLqzVc2w Y+ZrGWhFyks6K0Ud0UrluzzXHUZs0yAGdz1gpqHeoO0ON74+hXeNnjmUBEJ7dSQ836plhA RuDmiprNt9wAidEk7iqjHd9281Ufvzsm35kLY6iTZLwid5raUWmS4lIr02YbMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1686665771; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=XztxhBgcywq8RdUOG7bQ6dRSjkzy+YMMkltH+YRD4Tk=; b=H2ftcMP1dKZJKF207SQFv6sXIlCxJY5xhPq6OzwFhawgtikIQJ7GT4kZdHAjjbZWobuJSr pA3wcuFfy3TWvAtwkxlXNDV5ceqXF+fnVJTbY5SSxGGCn99hkfmSyavwG8ySfirxS6KEEs y/8gGZ1+AxyAkbjvbkvOwDc1MmKyCxXBs/UaCBpDd8uco6IuWZSgmZ/gYF8XPzPRniHayX 7laG8f6HdCMhtI0J3TgCGOd+vjPV5vPDtVTX/lt6xOLi4g3/7EVWlbCoqKdHgtpGzvBGBp bGujoKQSKCcHHH8GSO+0bQ24XhGZfGijXg9I2HScZ+TRjdyX/ropAIbtzQP75g== ARC-Authentication-Results: i=1; rspamd-6c69b8658d-7pslv; auth=pass smtp.auth=dreamhost smtp.mailfrom=siddhesh@gotplt.org X-Sender-Id: dreamhost|x-authsender|siddhesh@gotplt.org X-MC-Relay: Neutral X-MailChannels-SenderId: dreamhost|x-authsender|siddhesh@gotplt.org X-MailChannels-Auth-Id: dreamhost X-Dime-Eyes: 10c6a35451afdd84_1686665773164_275644682 X-MC-Loop-Signature: 1686665773164:396238304 X-MC-Ingress-Time: 1686665773164 Received: from pdx1-sub0-mail-a295.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.127.59.15 (trex/6.8.1); Tue, 13 Jun 2023 14:16:13 +0000 Received: from [192.168.98.119] (unknown [72.136.97.127]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) (Authenticated sender: siddhesh@gotplt.org) by pdx1-sub0-mail-a295.dreamhost.com (Postfix) with ESMTPSA id 4QgVwC04T6zX6; Tue, 13 Jun 2023 07:16:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gotplt.org; s=dreamhost; t=1686665771; bh=XztxhBgcywq8RdUOG7bQ6dRSjkzy+YMMkltH+YRD4Tk=; h=Date:Subject:To:From:Content-Type:Content-Transfer-Encoding; b=vKXdrb8BIDprqoYNhWoFCtv+Ds+3hGVi7RivmkrZGvEy8l3wbVwkB6DeYOSARw608 gceJJjTZtm2LGFOdy1KbutPnW75OKWIpszz1ripH5ACSaPSlI2F4mhD5H7e17zTXCW FoI7FOjV/CzDcsFt04P5savtuI0tPKUhfUC2nfeglwvvsuuI6Bu8abIRfd0xIWISXe td0OyRwYdMNc2PMeDqOgKF8QCsPLfQyEQc9RNRtT7tKh0myWdAfhyos/vs742PyCkh MJmPD3zPasl7G3VKot7edwhKuqv90nBXuIhi+qudKJ45TBrOHE1Mgfp1Erq6lD5xRH s0KN7nkUBMMjg== Message-ID: Date: Tue, 13 Jun 2023 10:16:09 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.10.0 Subject: Re: [PATCH v7 2/4] tests: replace system by xsystem Content-Language: en-US To: Adhemerval Zanella Netto , =?UTF-8?B?RnLDqWTDqXJpYyBCw6lyYXQ=?= , libc-alpha@sourceware.org References: <20230612151821.199003-1-fberat@redhat.com> <20230612151821.199003-3-fberat@redhat.com> <69a29cff-c7cb-e519-1e24-307ae19815c7@linaro.org> From: Siddhesh Poyarekar In-Reply-To: <69a29cff-c7cb-e519-1e24-307ae19815c7@linaro.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-3037.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,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 List-Id: On 2023-06-13 10:13, Adhemerval Zanella Netto wrote: > > > On 12/06/23 12:18, Frédéric Bérat via Libc-alpha wrote: >> With fortification enabled, system calls return result needs to be checked, >> has it gets the __wur macro enabled. >> --- >> Changes since v6: >> - Fixed support/Makefile ordering >> >> elf/tst-stackguard1.c | 5 ++++- >> libio/bug-mmap-fflush.c | 7 +++++-- >> nptl/tst-cancel7.c | 3 ++- >> nptl/tst-stackguard1.c | 4 +++- >> nss/tst-nss-db-endpwent.c | 3 ++- >> support/Makefile | 1 + >> support/xstdlib.h | 31 +++++++++++++++++++++++++++++++ >> support/xsystem.c | 37 +++++++++++++++++++++++++++++++++++++ >> 8 files changed, 85 insertions(+), 6 deletions(-) >> create mode 100644 support/xstdlib.h >> create mode 100644 support/xsystem.c >> >> diff --git a/elf/tst-stackguard1.c b/elf/tst-stackguard1.c >> index 2e65e36078..e03b242e7e 100644 >> --- a/elf/tst-stackguard1.c >> +++ b/elf/tst-stackguard1.c >> @@ -26,6 +26,8 @@ >> #include >> #include >> >> +#include >> + >> static const char *command; >> static bool child; >> static uintptr_t stack_chk_guard_copy; >> @@ -108,7 +110,8 @@ do_test (void) >> dup2 (fds[1], 2); >> close (fds[1]); >> >> - system (command); >> + xsystem (command); >> + >> exit (0); >> } >> >> diff --git a/libio/bug-mmap-fflush.c b/libio/bug-mmap-fflush.c >> index d8aa58985a..3f99222eef 100644 >> --- a/libio/bug-mmap-fflush.c >> +++ b/libio/bug-mmap-fflush.c >> @@ -4,6 +4,7 @@ >> #include >> #include >> >> +#include >> >> static char *fname; >> >> @@ -35,14 +36,16 @@ do_test (void) >> char buffer[1024]; >> >> snprintf (buffer, sizeof (buffer), "echo 'From foo@bar.com' > %s", fname); >> - system (buffer); >> + xsystem (buffer); >> + >> f = fopen (fname, "r"); >> fseek (f, 0, SEEK_END); >> o = ftello (f); >> fseek (f, 0, SEEK_SET); >> fflush (f); >> snprintf (buffer, sizeof (buffer), "echo 'From bar@baz.edu' >> %s", fname); >> - system (buffer); >> + xsystem (buffer); >> + >> fseek (f, o, SEEK_SET); >> if (fgets (buffer, 1024, f) == NULL) >> exit (1); >> diff --git a/nptl/tst-cancel7.c b/nptl/tst-cancel7.c >> index 2835613a9b..0ecb7d025f 100644 >> --- a/nptl/tst-cancel7.c >> +++ b/nptl/tst-cancel7.c >> @@ -27,6 +27,7 @@ >> #include >> #include >> #include >> +#include >> #include >> #include >> >> @@ -43,7 +44,7 @@ tf (void *arg) >> { >> char *cmd = xasprintf ("%s --direct --sem %s --pidfile %s", >> command, semfilename, pidfilename); >> - system (cmd); >> + xsystem (cmd); >> /* This call should never return. */ >> return NULL; >> } > > Joseph's comments for tests that area actually checking for the interface > [1] also applies here. I think we should keep using 'system' rather than > any wrapper here. > > > [1] https://sourceware.org/pipermail/libc-alpha/2023-June/148978.html Ahh yes, thanks, I missed that. Sid > >> diff --git a/nptl/tst-stackguard1.c b/nptl/tst-stackguard1.c >> index 4ac57157e9..7308b9d37a 100644 >> --- a/nptl/tst-stackguard1.c >> +++ b/nptl/tst-stackguard1.c >> @@ -28,6 +28,7 @@ >> #include >> >> #include >> +#include >> >> static const char *command; >> static bool child; >> @@ -140,7 +141,8 @@ do_test (void) >> dup2 (fds[1], 2); >> close (fds[1]); >> >> - system (command); >> + xsystem (command); >> + >> exit (0); >> } >> >> diff --git a/nss/tst-nss-db-endpwent.c b/nss/tst-nss-db-endpwent.c >> index 2b0fc1b064..4dba3fada6 100644 >> --- a/nss/tst-nss-db-endpwent.c >> +++ b/nss/tst-nss-db-endpwent.c >> @@ -23,6 +23,7 @@ >> >> #include >> #include >> +#include >> >> /* It is entirely allowed to start with a getpwent call without >> resetting the state of the service via a call to setpwent. >> @@ -55,7 +56,7 @@ do_test (void) >> >> cmd = xasprintf ("%s/makedb -o /var/db/passwd.db /var/db/passwd.in", >> support_bindir_prefix); >> - system (cmd); >> + xsystem (cmd); >> free (cmd); >> >> try_it (); >> diff --git a/support/Makefile b/support/Makefile >> index 5b14abdd28..8ee3344c9a 100644 >> --- a/support/Makefile >> +++ b/support/Makefile >> @@ -210,6 +210,7 @@ libsupport-routines = \ >> xstrndup \ >> xsymlink \ >> xsysconf \ >> + xsystem \ >> xunlink \ >> xuselocale \ >> xwaitpid \ >> diff --git a/support/xstdlib.h b/support/xstdlib.h >> new file mode 100644 >> index 0000000000..db5a5b9d4f >> --- /dev/null >> +++ b/support/xstdlib.h >> @@ -0,0 +1,31 @@ >> +/* Error-checking wrappers for stdlib functions. >> + Copyright (C) 2023 Free Software Foundation, Inc. >> + This file is part of the GNU C Library. >> + >> + The GNU C Library is free software; you can redistribute it and/or >> + modify it under the terms of the GNU Lesser General Public >> + License as published by the Free Software Foundation; either >> + version 2.1 of the License, or (at your option) any later version. >> + >> + The GNU C Library 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 >> + Lesser General Public License for more details. >> + >> + You should have received a copy of the GNU Lesser General Public >> + License along with the GNU C Library; if not, see >> + . */ >> + >> +#ifndef SUPPORT_XSTDLIB_H >> +#define SUPPORT_XSTDLIB_H >> + >> +#include >> +#include >> + >> +__BEGIN_DECLS >> + >> +void xsystem (const char *cmd); >> + >> +__END_DECLS >> + >> +#endif /* SUPPORT_XSTDLIB_H */ >> diff --git a/support/xsystem.c b/support/xsystem.c >> new file mode 100644 >> index 0000000000..1f558953bc >> --- /dev/null >> +++ b/support/xsystem.c >> @@ -0,0 +1,37 @@ >> +/* Error-checking replacement for "system". >> + Copyright (C) 2023 Free Software Foundation, Inc. >> + This file is part of the GNU C Library. >> + >> + The GNU C Library is free software; you can redistribute it and/or >> + modify it under the terms of the GNU Lesser General Public >> + License as published by the Free Software Foundation; either >> + version 2.1 of the License, or (at your option) any later version. >> + >> + The GNU C Library 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 >> + Lesser General Public License for more details. >> + >> + You should have received a copy of the GNU Lesser General Public >> + License along with the GNU C Library; if not, see >> + . */ >> + >> +#include >> +#include >> + >> +#include >> + >> +void >> +xsystem (const char *cmd) >> +{ >> + int ret = system (cmd); >> + >> + if (ret == 0 && cmd == NULL) >> + FAIL_EXIT1 ("Unable to spawn a shell for NULL command"); >> + >> + if (ret == 127) >> + FAIL_EXIT1 ("Child terminated with status 127"); >> + >> + if (ret < 0) >> + FAIL_EXIT1 ("system (\"%s\")", cmd); >> +} >