From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ot1-x335.google.com (mail-ot1-x335.google.com [IPv6:2607:f8b0:4864:20::335]) by sourceware.org (Postfix) with ESMTPS id 20D5E385801A for ; Sat, 27 Mar 2021 18:10:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 20D5E385801A Received: by mail-ot1-x335.google.com with SMTP id t23-20020a0568301e37b02901b65ab30024so8364798otr.4 for ; Sat, 27 Mar 2021 11:10:09 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=81YYrpm/05H/mbtL+VPxbNiPr+zdUCKnEYY1zSgRGzc=; b=l3DxGzqYyAA8Y3EeUH6wA2Vx7UiDeKIKEG6qz5iW0y4wmoCIXTyL/oSe8znaUPm39A YUJHNCGa2lbEc+thhLrjUnaZicKODOAK0JpHg2FDrbU3KXD3A/QUGzOuiUO5+DlP53H3 IyYGIESGZTAsOSMHhrmsWw0fGpoiL0OxY2KUjmP65HpPhQ5If8950ZytKG2zRou05VAv CxM5970sGLQIFIpqwXdGsH8791CRDXKKri3XNScNbE0eUDQUkJEQNHm2aPHqc2KcUV/k qZurxIHSODMoYl6Pa5zqhUmDp9G2vUVomU1r8Eab27ordGDsYCXcZjdfoznjAuGEVfQv 33GQ== X-Gm-Message-State: AOAM532m6Pt0324ERcK49Y7272dmyzrZH/cGRdkH2Y7f1xMbWjSS7kxV Otbx76LVNurAP9cfFqiUko7/9HZ7Inc117QE1Io98h/FdkxPrg== X-Google-Smtp-Source: ABdhPJwNceRCG5YRJjW7Av283cMVOyU5TX+Ceo1LbKqYjIPszActWE1r+pEgzMGhj0jXCKr35nRx4riMw9QMM518ruw= X-Received: by 2002:a05:6830:1515:: with SMTP id k21mr16692924otp.269.1616868608475; Sat, 27 Mar 2021 11:10:08 -0700 (PDT) MIME-Version: 1.0 References: <20210327162449.3215538-1-hjl.tools@gmail.com> <87ft0g8oz4.fsf@mid.deneb.enyo.de> In-Reply-To: <87ft0g8oz4.fsf@mid.deneb.enyo.de> From: "H.J. Lu" Date: Sat, 27 Mar 2021 11:09:32 -0700 Message-ID: Subject: [PATCH v2] test-strnlen.c: Check that strnlen won't go beyond the maximum length To: Florian Weimer Cc: "H.J. Lu via Libc-alpha" Content-Type: multipart/mixed; boundary="0000000000000ec5fd05be888f48" X-Spam-Status: No, score=-3035.3 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-List-Received-Date: Sat, 27 Mar 2021 18:10:10 -0000 --0000000000000ec5fd05be888f48 Content-Type: text/plain; charset="UTF-8" On Sat, Mar 27, 2021 at 10:51 AM Florian Weimer wrote: > > * H. J. Lu via 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. */ > > I don't understand the comment. Based on it, I would have expected a > null byte at the page boundary, which is incorrectly ignored by the > implementation. It places strings ending at page boundary without the null byte. If an implementation goes beyond EXP_LEN, it will trigger the segfault. > > +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); > > I think this needs to use wmemset for the WIDE case, see > wcsmbs/test-wcsnlen.c. Fixed. Here is the v2 patch. -- H.J. --0000000000000ec5fd05be888f48 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0001-test-strnlen.c-Check-that-strnlen-won-t-go-beyond.patch" Content-Disposition: attachment; filename="v2-0001-test-strnlen.c-Check-that-strnlen-won-t-go-beyond.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kms1qrv90 RnJvbSBjNWQzMmRlY2EwYTAyNDc4NGZhM2Q5NzQzZGRmZmUzOGI1NjdlYzhjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CkRhdGU6 IFNhdCwgMjcgTWFyIDIwMjEgMDk6MDY6MzkgLTA3MDAKU3ViamVjdDogW1BBVENIIHYyXSB0ZXN0 LXN0cm5sZW4uYzogQ2hlY2sgdGhhdCBzdHJubGVuIHdvbid0IGdvIGJleW9uZCB0aGUKIG1heGlt dW0gbGVuZ3RoCgpQbGFjZSBzdHJpbmdzIGVuZGluZyBhdCBwYWdlIGJvdW5kYXJ5IHdpdGhvdXQg dGhlIG51bGwgYnl0ZS4gIElmIGFuCmltcGxlbWVudGF0aW9uIGdvZXMgYmV5b25kIEVYUF9MRU4s IGl0IHdpbGwgdHJpZ2dlciB0aGUgc2VnZmF1bHQuCi0tLQogc3RyaW5nL3Rlc3Qtc3Rybmxlbi5j IHwgMzAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMzAg aW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3N0cmluZy90ZXN0LXN0cm5sZW4uYyBiL3N0cmlu Zy90ZXN0LXN0cm5sZW4uYwppbmRleCAwMjkzYWNiYzcxLi5kNzBmYWEyNmFiIDEwMDY0NAotLS0g YS9zdHJpbmcvdGVzdC1zdHJubGVuLmMKKysrIGIvc3RyaW5nL3Rlc3Qtc3Rybmxlbi5jCkBAIC0x OTgsNiArMTk4LDM1IEBAIGRvX3BhZ2VfdGVzdHMgKHZvaWQpCiAgICAgfQogfQogCisvKiBUZXN0 cyBtZWFudCB0byB1bnZlaWwgZmFpbCBvbiBpbXBsZW1lbnRhdGlvbnMgdGhhdCBhY2Nlc3MgYnl0 ZXMKKyAgIGJleW9uZCB0aGUgbWF4aXVtIGxlbmd0aC4gICovCisKK3N0YXRpYyB2b2lkCitkb19w YWdlXzJfdGVzdHMgKHZvaWQpCit7CisgIHNpemVfdCBpLCBleHBfbGVuLCBvZmZzZXQ7CisgIHNp emVfdCBsYXN0X29mZnNldCA9IHBhZ2Vfc2l6ZSAvIHNpemVvZiAoQ0hBUik7CisKKyAgQ0hBUiAq cyA9IChDSEFSICopIGJ1ZjI7CisgIE1FTVNFVCAocywgNjUsIGxhc3Rfb2Zmc2V0KTsKKworICAv KiBQbGFjZSBzaG9ydCBzdHJpbmdzIGVuZGluZyBhdCBwYWdlIGJvdW5kYXJ5IHdpdGhvdXQgdGhl IG51bGwKKyAgICAgYnl0ZS4gICovCisgIG9mZnNldCA9IGxhc3Rfb2Zmc2V0OworICBmb3IgKGkg PSAwOyBpIDwgMTI4OyBpKyspCisgICAgeworICAgICAgLyogRGVjcmVhc2Ugb2Zmc2V0IHRvIHN0 cmVzcyBzZXZlcmFsIHNpemVzIGFuZCBhbGlnbm1lbnRzLiAgKi8KKyAgICAgIG9mZnNldC0tOwor ICAgICAgZXhwX2xlbiA9IGxhc3Rfb2Zmc2V0IC0gb2Zmc2V0OworICAgICAgRk9SX0VBQ0hfSU1Q TCAoaW1wbCwgMCkKKwl7CisJICAvKiBJZiBhbiBpbXBsZW1lbnRhdGlvbiBnb2VzIGJleW9uZCBF WFBfTEVOLCBpdCB3aWxsIHRyaWdnZXIKKwkgICAgIHRoZSBzZWdmYXVsdC4gICovCisJICBkb19v bmVfdGVzdCAoaW1wbCwgKENIQVIgKikgKHMgKyBvZmZzZXQpLCBleHBfbGVuLCBleHBfbGVuKTsK Kwl9CisgICAgfQorfQorCiBpbnQKIHRlc3RfbWFpbiAodm9pZCkKIHsKQEAgLTI0NCw2ICsyNzMs NyBAQCB0ZXN0X21haW4gKHZvaWQpCiAKICAgZG9fcmFuZG9tX3Rlc3RzICgpOwogICBkb19wYWdl X3Rlc3RzICgpOworICBkb19wYWdlXzJfdGVzdHMgKCk7CiAgIHJldHVybiByZXQ7CiB9CiAKLS0g CjIuMzAuMgoK --0000000000000ec5fd05be888f48--