From nobody Fri Dec 13 21:49:51 2024 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Y930J0kQwz5gBf9; Fri, 13 Dec 2024 21:49:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Y930H6MMTz4gcx; Fri, 13 Dec 2024 21:49:51 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1734126591; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=n3J/XFDQVgWu4iKEX5JByTYdCHDQhIw2M3obEWlathk=; b=sELOzUATZII47tkLuQ6GB3wX7m5C9ZVqEHO5ilc5R0F3yK1ykIJl0AHbeHo5/adkrnPAkN LkBQ91qWzc8mQQ0SD2NFXxmNtwI29QfvG+AuBT7Zt8gA+D0yriS0+I5nbjACh1RVz/nePr lU+H7/9ha+y16MC0ZdzKJWMwftRTbGx9Rv5Ucz53Rn1bl/3VZ90jQDVDQLS6TnWPbgoSIF Pl1YnkmJ51s/X5ABgW17IN8elJkvCpKjnXQq3OrhtZaUjeV8ce4kTz+r1j2XZchFqTZKbE AO6cZs1phO0QR915n2nRTyeDO3LTXN5lOuWDrHA3YR6k/4nrdmoadXL53lSR2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1734126591; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=n3J/XFDQVgWu4iKEX5JByTYdCHDQhIw2M3obEWlathk=; b=AfhS1cfYZ4cIXqAsgQPwLIlqu0YNl6L+qkcngrtzGcPj5vXlpwDjgeIBGzF65i8CYXkhzo VXeWfmYUj04xisEGpv31UWhjI61lAKMMBEBr2LPmrbrcBx+yv6TBwk96KtJ74y2jw8TqgW qKXE40BhptFm2XWWEBJmtbU5JRDgOD8RtfZw0ZkuQPvtuIxjK9iW9ibSNmRLTpf7rNlApe cie2FGTS93kua5eid+CYTVFzZx6GT3GvUsPgTkmg2ojHa2mwHkvbk0ZBhYd1nGHaWjTspx o1XH8tIu2O7CRZUfa0hL8CfFQOL9v1b1E41+TNYpHr7q8jcncNmbT35fp7MTJA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1734126591; a=rsa-sha256; cv=none; b=V5ZuBNdbH4VMqt8Nbzrd3POolYtJjhPGofNpUN9JDqbImoFGA2qywlmnYv2h3la5MiZGIt MZZoHxF9deaWw93JnVoCvunHexvReya4yUnXi1XnsNrUs8jgL+Qz4y6E1WMwISrvZaSmM8 cFZ6kPbf10I6U5TD12+PSvhsNQ4SMIvuaD0IeOeJ4gGmH0CmtM8ygQGGfVyoYrK2q7GBg2 RXx5S4NvkXdkhuWx5hXkMPLCRAMYA1H3JPKeKXgfbha4te70nzNRoxDZvZL9gmPrvs+xuO n0FKwVLJyQ35SyhAERE1ZbM3R7Eq+780yyRfh2kgQlDdx38qdKfqGzDM57hGpg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Y930H5zh5zvX0; Fri, 13 Dec 2024 21:49:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 4BDLnpuM081116; Fri, 13 Dec 2024 21:49:51 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 4BDLnpNR081113; Fri, 13 Dec 2024 21:49:51 GMT (envelope-from git) Date: Fri, 13 Dec 2024 21:49:51 GMT Message-Id: <202412132149.4BDLnpNR081113@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Brooks Davis Subject: git: 3e9f61464ee3 - stable/14 - nvi: use memmove to realign buffers List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: brooks X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 3e9f61464ee36a01d60fa21572e3d44475f4cade Auto-Submitted: auto-generated The branch stable/14 has been updated by brooks: URL: https://cgit.FreeBSD.org/src/commit/?id=3e9f61464ee36a01d60fa21572e3d44475f4cade commit 3e9f61464ee36a01d60fa21572e3d44475f4cade Author: Brooks Davis AuthorDate: 2024-11-27 17:38:42 +0000 Commit: Brooks Davis CommitDate: 2024-12-13 21:05:19 +0000 nvi: use memmove to realign buffers Replace a rather convoluted realignment algorithm with memmove(). In addition to being hard to understand, the code would read beyond the end of the input buffer in certain conditions (found on CheriBSD). Sponsored by: DARPA Pull Request: https://github.com/lichray/nvi2/pull/122 (cherry picked from commit 56ef9c872bc5b086d73fed6317159e40be32d40e) --- contrib/nvi/common/log.c | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/contrib/nvi/common/log.c b/contrib/nvi/common/log.c index 96b246efad02..d9b142b16d01 100644 --- a/contrib/nvi/common/log.c +++ b/contrib/nvi/common/log.c @@ -706,30 +706,18 @@ apply_with(int (*db_func)(SCR *, recno_t, CHAR_T *, size_t), SCR *sp, recno_t lno, u_char *p, size_t len) { #ifdef USE_WIDECHAR - typedef unsigned long nword; - static size_t blen; - static nword *bp; - nword *lp = (nword *)((uintptr_t)p / sizeof(nword) * sizeof(nword)); - - if (lp != (nword *)p) { - int offl = ((uintptr_t)p - (uintptr_t)lp) << 3; - int offr = (sizeof(nword) << 3) - offl; - size_t i, cnt = (len + sizeof(nword) / 2) / sizeof(nword); + static u_char *bp; + if (!__builtin_is_aligned(p, sizeof(unsigned long))) { if (len > blen) { blen = p2roundup(MAX(len, 512)); - REALLOC(sp, bp, nword *, blen); + REALLOC(sp, bp, u_char *, blen); if (bp == NULL) return (1); } - for (i = 0; i < cnt; ++i) -#if BYTE_ORDER == BIG_ENDIAN - bp[i] = (lp[i] << offl) ^ (lp[i+1] >> offr); -#else - bp[i] = (lp[i] >> offl) ^ (lp[i+1] << offr); -#endif - p = (u_char *)bp; + memmove(bp, p, len); + p = bp; } #endif return db_func(sp, lno, (CHAR_T *)p, len / sizeof(CHAR_T));