From patchwork Mon Jan 10 21:35:35 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Noah Goldstein X-Patchwork-Id: 49813 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 C72FB3858C3A for ; Mon, 10 Jan 2022 21:36:50 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C72FB3858C3A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1641850610; bh=/dLfOMFYcYPKjUYwJwixnhNJayIgud98VKFZG6TW0s0=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=jka/uGfSRaAlBO5T+jbzfUDC5B9hVdP/Nn2Ev8SRwrR0lHitI5CKmBQ6xHGYjlf4v SNdFYLoKQcxzBtZTI2evAvbmjE7Ne2mHbYDvJgg8ZB/LxfxWIP92F0uIWl0sQqt9fU q2uZbiW9LP9bDA12s/Wh+5XbVkVECoQ5QH03POXU= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-pj1-x102f.google.com (mail-pj1-x102f.google.com [IPv6:2607:f8b0:4864:20::102f]) by sourceware.org (Postfix) with ESMTPS id 393A8385840E for ; Mon, 10 Jan 2022 21:35:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 393A8385840E Received: by mail-pj1-x102f.google.com with SMTP id l10-20020a17090a384a00b001b22190e075so953409pjf.3 for ; Mon, 10 Jan 2022 13:35:48 -0800 (PST) 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=/dLfOMFYcYPKjUYwJwixnhNJayIgud98VKFZG6TW0s0=; b=WVgjvDnevsthMn6dwlNFZmTSzApp5qcyNvMbUS1MGj6n4BrDLXhvpHNcYzby3nOjms QluwV7IF1KPFHNwHev2LgPYu+4fKO/Rl3MWhZ4Ri+VWjMISLqov0h0nIRffDNIYcYFAv EjhYZ4PI7XirE34MXkAvlkP1lmeD7jCQdXOl2XOXMv8IjsNKxaaz++rKOgJLIuLwE0Dd fEAGDShzYqeKAS1elf2xMEn4xA8Aq3NJ+uSTQo2xcJU7G2CyL9VJf/a7fr+TCs/iJbSU iN4WWV02gEAL88JShew8Y8zddyZuS7kbvDGo89KXFH/+ws7O5symfpaQYYFIUQ5l2OEG wWgg== X-Gm-Message-State: AOAM533P1+ShQsenbiHJdDFf5Uuc1DINcGM+pHvPvLkZ9CjFLT3H7CpW W4r1uboHhmIc0l2r+1pD9XPb7zno66g= X-Google-Smtp-Source: ABdhPJymYRM/D/xp4s9oIxe7kMmQ7NmxnlcjWS5xMdMCppymvnvggC8FR8sTEbWOtnpnbKj5aZ2V+A== X-Received: by 2002:a17:90b:4f86:: with SMTP id qe6mr1728318pjb.154.1641850547214; Mon, 10 Jan 2022 13:35:47 -0800 (PST) Received: from noah-tigerlake.webpass.net (136-24-166-223.cab.webpass.net. [136.24.166.223]) by smtp.googlemail.com with ESMTPSA id f12sm7996515pfe.127.2022.01.10.13.35.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Jan 2022 13:35:46 -0800 (PST) To: libc-alpha@sourceware.org Subject: [PATCH v3 2/7] x86: Fix __wcsncmp_evex in strcmp-evex.S [BZ# 28755] Date: Mon, 10 Jan 2022 15:35:35 -0600 Message-Id: <20220110213540.1258344-2-goldstein.w.n@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220110213540.1258344-1-goldstein.w.n@gmail.com> References: <20220109122946.2754917-1-goldstein.w.n@gmail.com> <20220110213540.1258344-1-goldstein.w.n@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-12.1 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.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: Noah Goldstein via Libc-alpha From: Noah Goldstein Reply-To: Noah Goldstein Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" Fixes [BZ# 28755] for wcsncmp by redirecting length >= 2^56 to __wcscmp_evex. For x86_64 this covers the entire address range so any length larger could not possibly be used to bound `s1` or `s2`. test-strcmp, test-strncmp, test-wcscmp, and test-wcsncmp all pass. Signed-off-by: Noah Goldstein Reviewed-by: H.J. Lu --- sysdeps/x86_64/multiarch/strcmp-evex.S | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/sysdeps/x86_64/multiarch/strcmp-evex.S b/sysdeps/x86_64/multiarch/strcmp-evex.S index 1d971f3889..0cd939d5af 100644 --- a/sysdeps/x86_64/multiarch/strcmp-evex.S +++ b/sysdeps/x86_64/multiarch/strcmp-evex.S @@ -104,6 +104,16 @@ ENTRY (STRCMP) je L(char0) jb L(zero) # ifdef USE_AS_WCSCMP +# ifndef __ILP32__ + movq %rdx, %rcx + /* Check if length could overflow when multiplied by + sizeof(wchar_t). Checking top 8 bits will cover all potential + overflow cases as well as redirect cases where its impossible to + length to bound a valid memory region. In these cases just use + 'wcscmp'. */ + shrq $56, %rcx + jnz __wcscmp_evex +# endif /* Convert units: from wide to byte char. */ shl $2, %RDX_LP # endif