From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oa1-x2e.google.com (mail-oa1-x2e.google.com [IPv6:2001:4860:4864:20::2e]) by sourceware.org (Postfix) with ESMTPS id 26EC33858C52 for ; Tue, 13 Jun 2023 14:14:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 26EC33858C52 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linaro.org Received: by mail-oa1-x2e.google.com with SMTP id 586e51a60fabf-1a4ffe97a88so2895510fac.1 for ; Tue, 13 Jun 2023 07:14:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1686665639; x=1689257639; h=content-transfer-encoding:in-reply-to:organization:from:references :cc:to:content-language:subject:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=EJqlEMZGNNDtkxc/2/bINkiKBh0pg1G3DXtGEEP7140=; b=dBfvaMjAkUzzJ/pmVs54OohCMduIjn8CzA4zuHLA8u929hSBiuSdlcibSEJZz/y0Nf PWBoKrHTeyVUXol0XKt2lkkrAKhnWr1sElMmOZg0P0Sz3pk8xyCYQ0o3pGHp2z3JeuqT FH3sTb+pKad/1aazVVpWZbeEYfFCxPDeI1vThAme97JpQZIsKc65Pa9f/BSsAGjav76Q Z/dkdTl1J6iz25KH/JHMou5YTyr/VnjD8qgOPSxphQ2QLGv0RS3JX3Q6IWa8WUqUp5kt 4R+Eb86yZCIVK1j2qmpR0+FiMPUJ7wdOr2Tl/WwB3Ve0Rs3aGORhml0ayVJpS0bRcDlG mK/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686665639; x=1689257639; h=content-transfer-encoding:in-reply-to:organization:from:references :cc:to:content-language:subject:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=EJqlEMZGNNDtkxc/2/bINkiKBh0pg1G3DXtGEEP7140=; b=hm8bt86G6LTdWaMg7C4zieK1Tdx5TBWz8Yxj0T8mYpeOJhuc0uakmwOqI2R4Z9NYH/ Bcbi/o2vEijCIWgulbUP4jfuU1O/6Nb1FyneU+Eszy9tz3efCeWhBjIr91howQNj0mcS QAKVntcPE6fJ3AA+OVDlxe3uY2D7F0FeGTQr7JM5XxWOkhcQb1nbYkGSVnriS/mKgR3a +Tu1KIU7aCAsFrwnHGDpKHn9nAJd5hFOmR5vI1qtVyRnjE3anKj1nh33ZBjNVqHwppfC drRJ68oLCOanrtyJrp+KY+5Rg0oDfJqbIoZPcHyTS3UYyGEEALpub5m2POc5cMx/Rq6q MGIA== X-Gm-Message-State: AC+VfDxfvfzLDi5+zk7t9793r1Yil1pWlTaf+4tXEklBDMSy6eCjQUxF tXaNAk2HH9xBBxPqhwy19QdnRW6adxeXcZSab6X+ag== X-Google-Smtp-Source: ACHHUZ5YK3AUFdPHPymPyGDbXDZbTmRqDq1UkrZmWA7d5oyITGCJoQT+RWyoovZz/Jc5C4LUlSDpRQ== X-Received: by 2002:a05:6871:6a86:b0:18e:d43c:3dc2 with SMTP id zf6-20020a0568716a8600b0018ed43c3dc2mr7196325oab.5.1686665639485; Tue, 13 Jun 2023 07:13:59 -0700 (PDT) Received: from ?IPV6:2804:1b3:a7c2:8501:140e:99f1:7d92:1ee7? ([2804:1b3:a7c2:8501:140e:99f1:7d92:1ee7]) by smtp.gmail.com with ESMTPSA id en31-20020a056870079f00b001a6ad211bf3sm1427674oab.1.2023.06.13.07.13.57 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 13 Jun 2023 07:13:58 -0700 (PDT) Message-ID: <69a29cff-c7cb-e519-1e24-307ae19815c7@linaro.org> Date: Tue, 13 Jun 2023 11:13:56 -0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Subject: Re: [PATCH v7 2/4] tests: replace system by xsystem Content-Language: en-US To: =?UTF-8?B?RnLDqWTDqXJpYyBCw6lyYXQ=?= , libc-alpha@sourceware.org Cc: siddhesh@gotplt.org References: <20230612151821.199003-1-fberat@redhat.com> <20230612151821.199003-3-fberat@redhat.com> From: Adhemerval Zanella Netto Organization: Linaro In-Reply-To: <20230612151821.199003-3-fberat@redhat.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-12.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 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 > 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); > +}