From patchwork Sat Mar 27 16:24:49 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 42788 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 2A4F1385780E; Sat, 27 Mar 2021 16:25:01 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2A4F1385780E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1616862301; bh=k0yMT+DqzsInUaPga4tqdIO97VMDV0B9oi56KziforU=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=kWbPkl4FGvm49+SVyqMkl7H6p8Wk2g97Z6zwIbCHmWBH7mhVHok4RS1cwOX124wsI DBpmBiUREX5scNXn8Zp/urn8RWaWmmav+z/qTUpI/tQLP71omp3kqCepYfhm++bOWp ExKVI7hNZpmS6OQLQ6fOViiciDMayjLHBfOVhhLM= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-pl1-x629.google.com (mail-pl1-x629.google.com [IPv6:2607:f8b0:4864:20::629]) by sourceware.org (Postfix) with ESMTPS id 3A897385801A for ; Sat, 27 Mar 2021 16:24:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 3A897385801A Received: by mail-pl1-x629.google.com with SMTP id l1so2377519plg.12 for ; Sat, 27 Mar 2021 09:24:59 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=k0yMT+DqzsInUaPga4tqdIO97VMDV0B9oi56KziforU=; b=OUfug1hN/FQ0WO3GnKjaL9c9KDLd3yiPNrWDxqIPqwN8N4SiVsEDXzDbEhjrVwA+H0 eqbbreNec8m0wCwdf5QbXALCYkZ5ojhYLivVAcoYxLjP/LLhmwVfdSAIJ95lCrOo9EfK 7vC8dfCoHTN8CqvBoyG4+o1Hl3HyPbXi4HgcVIpPOA/IHT7r8CIzTg55brhayFm3DX2g FZ7zsCXmAEAWznn1gUsA3ur+Sb2G8RGvVk2AiqslZb2iPaD4DD0u7P6N+JaWD1RTsRY2 4nV2wpPmRSorGgVpspI0nFHaABjYqeKUROA1WIrxaGTpVrsTI9XVEXlmLYVltn3xauQu zT9Q== X-Gm-Message-State: AOAM5316QRDk0yiTXvRKJTqygpUlIZPcLjlREaj5N6hZ3Zalqx7IweQE fuHBRffVGi7wnzBUkLYx4pJCv5LQtwHjLQ== X-Google-Smtp-Source: ABdhPJzerD6LK2WFziv9yCykVH/vcqgAcsb3N5YYQqXciC/E/GjttH8k4XQS6MWc+AXmNjqbicpJOQ== X-Received: by 2002:a17:902:d4c2:b029:e7:32bd:6b77 with SMTP id o2-20020a170902d4c2b02900e732bd6b77mr8172105plg.45.1616862298175; Sat, 27 Mar 2021 09:24:58 -0700 (PDT) Received: from gnu-cfl-2.localdomain ([172.56.38.37]) by smtp.gmail.com with ESMTPSA id 3sm12684696pfh.13.2021.03.27.09.24.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Mar 2021 09:24:57 -0700 (PDT) Received: from gnu-cfl-2.localdomain (localhost [IPv6:::1]) by gnu-cfl-2.localdomain (Postfix) with ESMTP id 7536D1A042D for ; Sat, 27 Mar 2021 09:24:56 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [PATCH] Check that strnlen won't go beyond the maximum length Date: Sat, 27 Mar 2021 09:24:49 -0700 Message-Id: <20210327162449.3215538-1-hjl.tools@gmail.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 X-Spam-Status: No, score=-3036.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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: "H.J. Lu via Libc-alpha" From: "H.J. Lu" Reply-To: "H.J. Lu" Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" Run strnlen tests on strings without the null byte around the page boundary. --- string/test-strnlen.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/string/test-strnlen.c b/string/test-strnlen.c index 61eb521dc1..a49d93afa2 100644 --- a/string/test-strnlen.c +++ b/string/test-strnlen.c @@ -196,6 +196,31 @@ do_page_tests (void) } } +/* Tests meant to unveil fail on implementation that does not access bytes + without the null character around the page boundary accordingly. */ +static void +do_page_2_tests (void) +{ + size_t i, exp_len, offset; + size_t last_offset = page_size / sizeof (CHAR); + + CHAR *s = (CHAR *) buf2; + memset (s, 65, page_size); + + /* Place short strings ending at page boundary. */ + offset = last_offset; + for (i = 0; i < 128; i++) + { + /* Decrease offset to stress several sizes and alignments. */ + offset--; + exp_len = last_offset - offset; + FOR_EACH_IMPL (impl, 0) + { + do_one_test (impl, (CHAR *) (s + offset), exp_len, exp_len); + } + } +} + int test_main (void) { @@ -242,6 +267,7 @@ test_main (void) do_random_tests (); do_page_tests (); + do_page_2_tests (); return ret; }