From nobody Sun Feb 5 04:27:29 2023 X-Original-To: dev-commits-src-main@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 4P8bw20smKz3kqYj; Sun, 5 Feb 2023 04:27:30 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4P8bw20LZFz4Lq5; Sun, 5 Feb 2023 04:27:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1675571250; 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=VW4gAQUJzuZgJaHQ9Dm18Yp2QDA7sXn6kxTiEQOzs9Y=; b=J1T+RFsMI09Ne7dZg1Bp66D6Mql3alkGTjE4fK2liUgSSN0OyR7ESe1eoQr4rHT6oNs5cH Vdo5jXrwJJ0dMjGrg0seNxbLHTdxPWEYz0zSjHyBgl7kgXkYlsPhlvhGESQcppT2eFhM0n WcJvG8qvHEriecipRDwCg63CYd9VWxEeFw1IYgowEsJ5J+8sDejFm7vlzYceAvGLf754IP lcblFKtFFtJlrhQpq2qcL3hlEuo53N8GtB/83M/oHXR2qzn1QxlBzK6qGQBRoruMQO17u4 Iwnk5nZ5EIredZB2s0wYd1N90qKj/74JH1YSlw9RVtRhpzihKjE+Xq7NxH5IRw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1675571250; 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=VW4gAQUJzuZgJaHQ9Dm18Yp2QDA7sXn6kxTiEQOzs9Y=; b=U+xWNfFTSJihcZnufTIvKScnbkEJsPw8hDaDJbOhL+kEH3M5UPzABZxYPvlFoMfFklA6M4 YUQM0BpWiqxecykPBrS4/xFJxIiSOZk5217UyKSEkhO/pQymLIp0bzzqMm38HWnDbHXCC6 WsXCNBHZrRpiUtXwLVdhw1x1QFKAAAqwSOIgm9WuvGe8C4eaj0XQfql7pHJs/SEsgcEnGi KmqhWTd3R7dM/Fl9RA5MAKJmO1fuZ47k0v4Hz25TGr6ifELUHpgWdB5v+U36DBcSg9TjxK aq5v9byElwpuX5UcgcEFiWz2NaCh08Ek/6/xm8GdLehpwBPlTDWUOFsIjSL+vA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1675571250; a=rsa-sha256; cv=none; b=QaP9DL9YVAA45a86vpnBV/FD4NpdbDfmmVO5hSH2TBz2ECVDDZDsSBRu+hw1Ok9zA7EXvF 9Py57ReFxveEv2jSVElJutV+MRl/ZNFsfUhSPQw7OOGzdbwvZe4ZkOIbXK8dU+FKo6f+Ye m7gI8eNi23YP1x4+GLWTFWbXvjoAYDAgFupmP2GI3lS3Bx+N7Wy/lgwJXU8NBXtEZ8bZ8+ DKj0m+vrEiQdCF0WlNaEgqAyalcCDG6K2KGDHavV2M3CvYk4RqNpOi1sApJzO7ap0M7q+f /VVUjyEfVoYt1PVHRKBsIPn2MVfmk/fplW1Stjp/APe+mDoARUlkBy4DX97XgQ== 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 4P8bw16PDWzhMb; Sun, 5 Feb 2023 04:27:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 3154RTiZ044992; Sun, 5 Feb 2023 04:27:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 3154RTbM044991; Sun, 5 Feb 2023 04:27:29 GMT (envelope-from git) Date: Sun, 5 Feb 2023 04:27:29 GMT Message-Id: <202302050427.3154RTbM044991@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: 70164d957eb2 - main - Fix truncation when ssize_t is larger than MAX_INT List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 70164d957eb2d1147e0b52a4b1da45f64be8af8e Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=70164d957eb2d1147e0b52a4b1da45f64be8af8e commit 70164d957eb2d1147e0b52a4b1da45f64be8af8e Author: Alfonso AuthorDate: 2021-07-24 16:52:31 +0000 Commit: Warner Losh CommitDate: 2023-02-05 04:14:14 +0000 Fix truncation when ssize_t is larger than MAX_INT Casting to int truncates size on some platforms, resulting swab not copying all the data. Cast len to size_t to avoid right shifting a signed value: we know here it's > 0, so we can safely cast it w/o losing precision. In addition, be more careful with signedness of char pointers and temporaries. Downgrade tmp from unsigned long to unsigned char since we're only reading and writing characters. Reviewed by: imp Pull Request: https://github.com/freebsd/freebsd-src/pull/516 --- lib/libc/string/swab.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/libc/string/swab.c b/lib/libc/string/swab.c index 1a30ce813784..724ee48ea0c7 100644 --- a/lib/libc/string/swab.c +++ b/lib/libc/string/swab.c @@ -43,15 +43,16 @@ __FBSDID("$FreeBSD$"); void swab(const void * __restrict from, void * __restrict to, ssize_t len) { - unsigned long temp; - int n; - char *fp, *tp; + unsigned char temp; + size_t n; + const unsigned char *fp; + unsigned char *tp; if (len <= 0) return; - n = len >> 1; - fp = (char *)from; - tp = (char *)to; + n = (size_t)len >> 1; + fp = (const unsigned char *)from; + tp = (unsigned char *)to; #define STEP temp = *fp++,*tp++ = *fp++,*tp++ = temp /* round to multiple of 8 */ for (; n & 0x7; --n)