From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from aye.elm.relay.mailchannels.net (aye.elm.relay.mailchannels.net [23.83.212.6]) by sourceware.org (Postfix) with ESMTPS id 7E3883858D20 for ; Thu, 25 May 2023 01:22:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7E3883858D20 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 6095C8C1080; Thu, 25 May 2023 01:22:37 +0000 (UTC) Received: from pdx1-sub0-mail-a305.dreamhost.com (unknown [127.0.0.6]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id E2C668C1439; Thu, 25 May 2023 01:22:36 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1684977756; a=rsa-sha256; cv=none; b=CFyd9zXXEfzOwi2+oOWKDyFTTPDGf4uqtiUOukbkX69Z3xxUZgWmlkGKr7v+CVPe1CO3de 0Rl2jM/k9n5ZyC1PeVvWklRoo+ps5aFm4GYZmrZAHwAeYvvUURLBN7u2xEw2aZ7fgVJ+UQ +IuzaSnbb0upixd78Ymn4En4RUrs9mZb0j9RmsuBtB8OHK+SXaxStb5nTZOYajhoKUkdX/ DSUk4bGHY8/hyvN1eSG2eprzE1IEySgsPrmiFsohZcpfqXLlcc/5S/DIpsqzfpO0P6X6l4 nRb40SHIfoSVxciBZ1mmLFZcX2sRtoskM1k5VELCovbTuTxJ9byZpNHQu9HEkw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1684977756; 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=+SgfweCWQW83rlHSa66qRSSsKQUMb/ck+jRkv6VnF0o=; b=tLGXfaZzf4VVBKCmQS7Gl1aYv3qCvLWlVpJpNplBAerE9fzXBMQU/97OnCzDSW1Lomj0JF GIClwUM+wHzpFgsWy2PnDiockf4yaWoOV/NCDgDZjscK870ea8TpkJboNvbbn4GFBIfzX7 T2RBtG7Qm2qcqh+LJPxZ9wFZcq2Z53yBVkELMX5iH+DFkNynshIJ/7bCAsPBZ2iLCDGfk9 NMiYaA5mrAYoBBs9U4LVtE/Co2k0EK86m58GqOv4+XxD+Lq6LnLFU8EjmK33OZVHEMgO/h +GOZoDif9NbEyBSvVnbvQGb4jWt4T9KO5QOhOQN7sWGVKsnLHrrY28jDAJeHeg== ARC-Authentication-Results: i=1; rspamd-79bb5575d7-wb9vd; 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-Whimsical-Reign: 439ab01e23850a3f_1684977757177_4176120998 X-MC-Loop-Signature: 1684977757177:195630541 X-MC-Ingress-Time: 1684977757177 Received: from pdx1-sub0-mail-a305.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.107.49.218 (trex/6.8.1); Thu, 25 May 2023 01:22:37 +0000 Received: from [192.168.0.182] (bras-vprn-toroon4834w-lp130-02-142-113-138-85.dsl.bell.ca [142.113.138.85]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) (Authenticated sender: siddhesh@gotplt.org) by pdx1-sub0-mail-a305.dreamhost.com (Postfix) with ESMTPSA id 4QRVfN3ZjnzB8; Wed, 24 May 2023 18:22:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gotplt.org; s=dreamhost; t=1684977756; bh=+SgfweCWQW83rlHSa66qRSSsKQUMb/ck+jRkv6VnF0o=; h=Date:Subject:To:From:Content-Type:Content-Transfer-Encoding; b=qbxlGWlMAiLjXr/C4J/bbjQvp06f84wqf99AUeRhRdqyNRAhXzSRndbGFKGii0Xb/ WQzlLu0pSZSibDuU+h9liGNgDpiPeteXi94gyVc6/IeeamlJxoqXEaNCP0FGqNBOD6 MrQFeVil+zkcCGsaxuOPEHbi4wPhrzV+enlL9xpkXFdwSdewzeijgwvzoBBVAkRJkJ JkiFWBRPkjcbdUp/BRYY1xH4ZNeuhKQe/ZrlZGqppPPZCdkaFrx5uQfzkXmewK+ewk cnPve+NhnBDFk72JkfyPfJM6g262+Im+BNAz7Qov5plLSnTe0Sh2kz+zBsqa51LfjF A4tdjM3sXzpbw== Message-ID: <79b46540-2377-2d46-3859-aca43a046ee7@gotplt.org> Date: Wed, 24 May 2023 21:22:35 -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 v4 10/15] tests: replace system by xsystem Content-Language: en-US To: =?UTF-8?B?RnLDqWTDqXJpYyBCw6lyYXQ=?= , libc-alpha@sourceware.org References: <20230428122142.928135-1-fberat@redhat.com> <20230428122142.928135-11-fberat@redhat.com> From: Siddhesh Poyarekar In-Reply-To: <20230428122142.928135-11-fberat@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-3037.5 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,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-04-28 08:21, Frédéric Bérat wrote: > With fortification enabled, system calls return result needs to be checked, > has it gets the __wur macro enabled. > --- > elf/tst-stackguard1.c | 2 +- > libio/bug-mmap-fflush.c | 7 +++++-- > nptl/tst-cancel7.c | 3 ++- > nptl/tst-stackguard1.c | 2 +- > nss/tst-nss-db-endpwent.c | 3 ++- > support/Makefile | 1 + > support/xstdlib.h | 31 +++++++++++++++++++++++++++++++ > support/xsystem.c | 29 +++++++++++++++++++++++++++++ > 8 files changed, 72 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..7dbde6568c 100644 > --- a/elf/tst-stackguard1.c > +++ b/elf/tst-stackguard1.c > @@ -108,7 +108,7 @@ do_test (void) > dup2 (fds[1], 2); > close (fds[1]); > > - system (command); > + if (system (command)) {/* We aren't interested on the result */} > 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; > } > diff --git a/nptl/tst-stackguard1.c b/nptl/tst-stackguard1.c > index 4ac57157e9..9ec9e8f982 100644 > --- a/nptl/tst-stackguard1.c > +++ b/nptl/tst-stackguard1.c > @@ -140,7 +140,7 @@ do_test (void) > dup2 (fds[1], 2); > close (fds[1]); > > - system (command); > + if (system (command)) {/* We aren't interested in the result */} Why not? > 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 a4ac86544c..4c8eb3dedd 100644 > --- a/support/Makefile > +++ b/support/Makefile > @@ -209,6 +209,7 @@ libsupport-routines = \ > xstrdup \ > xstrndup \ > xsymlink \ > + xsystem \ > xsysconf \ > xunlink \ > xuselocale \ > diff --git a/support/xstdlib.h b/support/xstdlib.h > new file mode 100644 > index 0000000000..58642e3542 > --- /dev/null > +++ b/support/xstdlib.h > @@ -0,0 +1,31 @@ > +/* Error-checking wrappers for stdlib functions. > + Copyright (C) 2016-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..8ceaad1531 > --- /dev/null > +++ b/support/xsystem.c > @@ -0,0 +1,29 @@ > +/* Error-checking replacement for "system". > + Copyright (C) 2018-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) > +{ > + if (system (cmd) < 0) > + FAIL_EXIT1 ("system (\"%s\")", cmd); This would succeed if system exits with status 127, when it's unable to spawn a child shell. It will also not behave correctly with a NULL cmd, where I reckon we'd want to fail if no shell is available, i.e. return value of 0. > +}