From patchwork Tue Oct 5 23:30:38 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stafford Horne X-Patchwork-Id: 45914 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 726CB385B83B for ; Tue, 5 Oct 2021 23:31:05 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 726CB385B83B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1633476665; bh=beD9ld/a90Ar8XqGOS8W8xcaWbTHAC9haDEOMfwzUa4=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=pKf4CGg31pscFxq1A6fPh7DGNOvU4tqfar8RPGn+wYfORkJgv2FeJ8ljZSgM7AKvV RSvou32c5hbw5VzAsh5JZ9dtv7IBP2yrB7Wx2x6wn1d+UCaA84uVgek8tDXZJibXV1 K7azQaBqsk3BLzQzFKHxeC5rk0UmXr9D7K6bBg/s= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-pl1-x632.google.com (mail-pl1-x632.google.com [IPv6:2607:f8b0:4864:20::632]) by sourceware.org (Postfix) with ESMTPS id 488A13858415 for ; Tue, 5 Oct 2021 23:30:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 488A13858415 Received: by mail-pl1-x632.google.com with SMTP id a11so544467plm.0 for ; Tue, 05 Oct 2021 16:30:43 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=beD9ld/a90Ar8XqGOS8W8xcaWbTHAC9haDEOMfwzUa4=; b=zWmv7cJxyBMazAdN1NFFU5Q9VM8rROQyY8ZyFGe++euCFp6eRKCaBA7jkHgv+QDhcp WcXCoeMWGLHkVvL6u2AknJ81JMnq7ObQYyY7gm2omMn5iYUQLMgZKfyZ8Wrz7Pli9hK7 1hxyBquwCY4DsYb937ui7YAWXZY5SJfdZ0tXXkgFvaTqgpiiyQanUP+SkRu+qnCSk9ZZ dfj219LQFm8u8Jt1fDy6hgd7XwfYDtVxHQ/FMh9QlCGbxiPlld1srqD7hx3YZYrrPOBA Xt1blLw/gkEHkI0+bBtYGAsPMW3c6WVUcSFK6jSGHtuj0kLOWKUYsZQtzz9la0Ipv6BX LWbg== X-Gm-Message-State: AOAM531MmEoWsOHdCEtH/NGHObZSFogxD0wbG6rmdBMmBrMEHhT7JY22 tKKTIIa9azCMHNJ2JHF5nQgeZyfnemY= X-Google-Smtp-Source: ABdhPJwjdsjY7r951KaEpzuf69ADGDD28jF48eFv+PtEwuA9NXWcnBLS0FWdg2jWFoAHlor0oCZBgw== X-Received: by 2002:a17:90b:224a:: with SMTP id hk10mr7013519pjb.102.1633476641834; Tue, 05 Oct 2021 16:30:41 -0700 (PDT) Received: from localhost ([2409:10:24a0:4700:e8ad:216a:2a9d:6d0c]) by smtp.gmail.com with ESMTPSA id 60sm3087266pjz.11.2021.10.05.16.30.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Oct 2021 16:30:41 -0700 (PDT) To: GLIBC patches Subject: [PATCH] elf: Update audit tests to not depend on stdout Date: Wed, 6 Oct 2021 08:30:38 +0900 Message-Id: <20211005233038.2219730-1-shorne@gmail.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 X-Spam-Status: No, score=-9.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_ASCII_DIVIDERS, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Stafford Horne via Libc-alpha From: Stafford Horne Reply-To: Stafford Horne Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" The tst-audit14, tst-audit15 and tst-audit16 tests all have audit modules that write to stdout; the test reads from stdout to confirm what was written. This assumes the stdout is a file which is not the case when run over ssh. This patch updates the tests to use a post run cmp command to compare the output against and .exp file. This is similar to how many other tests work and it fixes the stdout limitation. Also, this means the test code can be greatly simplified. Reviewed-by: Adhemerval Zanella --- elf/Makefile | 14 ++++++++++++ elf/tst-audit14.c | 21 ----------------- elf/tst-audit14.exp | 1 + elf/tst-audit15.c | 51 +---------------------------------------- elf/tst-audit15.exp | 2 ++ elf/tst-audit16.c | 55 +-------------------------------------------- elf/tst-audit16.exp | 3 +++ 7 files changed, 22 insertions(+), 125 deletions(-) create mode 100644 elf/tst-audit14.exp create mode 100644 elf/tst-audit15.exp create mode 100644 elf/tst-audit16.exp diff --git a/elf/Makefile b/elf/Makefile index 26986c0692..bf45d8ee24 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -240,6 +240,10 @@ tests-execstack-yes = tst-execstack tst-execstack-needed tst-execstack-prog endif ifeq ($(have-depaudit),yes) tests += tst-audit14 tst-audit15 tst-audit16 +ifeq ($(run-built-tests),yes) +tests-special += $(objpfx)tst-audit14-cmp.out $(objpfx)tst-audit15-cmp.out \ + $(objpfx)tst-audit16-cmp.out +endif endif endif tests += $(tests-execstack-$(have-z-execstack)) @@ -1492,6 +1496,16 @@ $(objpfx)tst-auditmod17.so: $(objpfx)tst-auditmod17.os CFLAGS-.os += $(call elide-stack-protector,.os,tst-auditmod17) tst-audit17-ENV = LD_AUDIT=$(objpfx)tst-auditmod17.so +$(objpfx)tst-audit14-cmp.out: tst-audit14.exp $(objpfx)tst-audit14.out + cmp $^ > $@; \ + $(evaluate-test) +$(objpfx)tst-audit15-cmp.out: tst-audit15.exp $(objpfx)tst-audit15.out + cmp $^ > $@; \ + $(evaluate-test) +$(objpfx)tst-audit16-cmp.out: tst-audit16.exp $(objpfx)tst-audit16.out + cmp $^ > $@; \ + $(evaluate-test) + # tst-sonamemove links against an older implementation of the library. LDFLAGS-tst-sonamemove-linkmod1.so = \ -Wl,--version-script=tst-sonamemove-linkmod1.map \ diff --git a/elf/tst-audit14.c b/elf/tst-audit14.c index c57c2184c3..13c14b1a92 100644 --- a/elf/tst-audit14.c +++ b/elf/tst-audit14.c @@ -16,30 +16,9 @@ License along with the GNU C Library; if not, see . */ -#include -#include -#include -#include - static int do_test (void) { - /* Verify what the audit module has written. This test assumes that - standard output has been redirected to a regular file. */ - FILE *fp = xfopen ("/dev/stdout", "r"); - - char *buffer = NULL; - size_t buffer_length = 0; - size_t line_length = xgetline (&buffer, &buffer_length, fp); - const char *message = "info: tst-auditlogmod-1.so loaded\n"; - TEST_COMPARE_BLOB (message, strlen (message), buffer, line_length); - - /* No more audit module output. */ - line_length = xgetline (&buffer, &buffer_length, fp); - TEST_COMPARE_BLOB ("", 0, buffer, line_length); - - free (buffer); - xfclose (fp); return 0; } diff --git a/elf/tst-audit14.exp b/elf/tst-audit14.exp new file mode 100644 index 0000000000..8e96b3c858 --- /dev/null +++ b/elf/tst-audit14.exp @@ -0,0 +1 @@ +info: tst-auditlogmod-1.so loaded diff --git a/elf/tst-audit15.c b/elf/tst-audit15.c index 76f3b9f9ed..c6232eacf2 100644 --- a/elf/tst-audit15.c +++ b/elf/tst-audit15.c @@ -1,50 +1 @@ -/* Main program with DT_AUDIT and DT_DEPAUDIT. Two audit modules. - Copyright (C) 2020-2021 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 -#include - -static int -do_test (void) -{ - /* Verify what the audit modules have written. This test assumes - that standard output has been redirected to a regular file. */ - FILE *fp = xfopen ("/dev/stdout", "r"); - - char *buffer = NULL; - size_t buffer_length = 0; - size_t line_length = xgetline (&buffer, &buffer_length, fp); - const char *message = "info: tst-auditlogmod-1.so loaded\n"; - TEST_COMPARE_BLOB (message, strlen (message), buffer, line_length); - - line_length = xgetline (&buffer, &buffer_length, fp); - message = "info: tst-auditlogmod-2.so loaded\n"; - TEST_COMPARE_BLOB (message, strlen (message), buffer, line_length); - - /* No more audit module output. */ - line_length = xgetline (&buffer, &buffer_length, fp); - TEST_COMPARE_BLOB ("", 0, buffer, line_length); - - free (buffer); - xfclose (fp); - return 0; -} - -#include +#include "tst-audit14.c" diff --git a/elf/tst-audit15.exp b/elf/tst-audit15.exp new file mode 100644 index 0000000000..ac6d59e569 --- /dev/null +++ b/elf/tst-audit15.exp @@ -0,0 +1,2 @@ +info: tst-auditlogmod-1.so loaded +info: tst-auditlogmod-2.so loaded diff --git a/elf/tst-audit16.c b/elf/tst-audit16.c index 168a294c86..c6232eacf2 100644 --- a/elf/tst-audit16.c +++ b/elf/tst-audit16.c @@ -1,54 +1 @@ -/* Main program with DT_AUDIT and DT_DEPAUDIT. Three audit modules. - Copyright (C) 2020-2021 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 -#include - -static int -do_test (void) -{ - /* Verify what the audit modules have written. This test assumes - that standard output has been redirected to a regular file. */ - FILE *fp = xfopen ("/dev/stdout", "r"); - - char *buffer = NULL; - size_t buffer_length = 0; - size_t line_length = xgetline (&buffer, &buffer_length, fp); - const char *message = "info: tst-auditlogmod-1.so loaded\n"; - TEST_COMPARE_BLOB (message, strlen (message), buffer, line_length); - - line_length = xgetline (&buffer, &buffer_length, fp); - message = "info: tst-auditlogmod-2.so loaded\n"; - TEST_COMPARE_BLOB (message, strlen (message), buffer, line_length); - - line_length = xgetline (&buffer, &buffer_length, fp); - message = "info: tst-auditlogmod-3.so loaded\n"; - TEST_COMPARE_BLOB (message, strlen (message), buffer, line_length); - - /* No more audit module output. */ - line_length = xgetline (&buffer, &buffer_length, fp); - TEST_COMPARE_BLOB ("", 0, buffer, line_length); - - free (buffer); - xfclose (fp); - return 0; -} - -#include +#include "tst-audit14.c" diff --git a/elf/tst-audit16.exp b/elf/tst-audit16.exp new file mode 100644 index 0000000000..7d6145ad4d --- /dev/null +++ b/elf/tst-audit16.exp @@ -0,0 +1,3 @@ +info: tst-auditlogmod-1.so loaded +info: tst-auditlogmod-2.so loaded +info: tst-auditlogmod-3.so loaded