From nobody Wed Jan 18 23:48:37 2023 X-Original-To: dev-commits-src-branches@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 4Ny2X61NL8z2v67F; Wed, 18 Jan 2023 23:48:38 +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 4Ny2X60sdNz3CCg; Wed, 18 Jan 2023 23:48:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1674085718; 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=12/OG0T9hYtcwN6o8Cm65cHVgX+lgirdsCyGvVkbFQ4=; b=xLpXuZE6NNtXtxIKi6N0LAH6xmpeQiPs4X3ztMuYP8Gtil3tZPeoG8k4tuSPhcNGKpykov DufuxBwrAsDMGD4IklH2IRTb+ktHZ7k/wOZiH5MAxdZG/C1rDMcGDKuH97s1ilZ0d4zvQO FbQgrbOW75N5dBkr2QzMXnT1hg4gpJjbjaO/KTSIzyB8iQaBZXgQprHgWDYwmS75UzwUQe 2aB8XVTQiTPx5cxDa1O2/8LlE4gHzVsg5tSihhzByvaleOmktJF5AGSHLUs2P4O8fI68qC 5knP+O18GqjOqsV2x3ktfimHjIQhxWNYju0M1lJM6o/05ZRVFO0t+HulaGDT4A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1674085718; 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=12/OG0T9hYtcwN6o8Cm65cHVgX+lgirdsCyGvVkbFQ4=; b=wgsHf8Poj7EveXoWkRORJ3Dr1r8K2wj2UkNj3cDa5Zk9551rBukWCnw7ZqabjH5CDVfk8o cPQfLuAB1uEVqagdCC/8OE/fzljtjLqBckHMraI9PxsfF/3IOPkO2yplFz9kfoUC2RIy9A 06ZZUMLYmjndNRlgqkOAwKVX3CwqE8lIWUfO4ANNrQMPssFzWcEWuXfWj1KOFVUbTXevMf T6AM7Vmz0+zS97xKo0wEQXcpJ8pqkSEeD2mi0j/NcWu5awLc7m739jOCv0TnNKtXGtx1wI 456wEL9Gx2GqWrs0rUkxrnrbyeaedLMTx7hI9NcLPgRMB/b/cmiYPToDZZqnYg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1674085718; a=rsa-sha256; cv=none; b=IiuaL1yUgCkfNhlcxWe9KOIyUkUn71YP4DR4rYIAqde2JIib3uJrMOPCmx7vRmqaXM9Qt6 oD+cqNBp5TvlY2z+xhY/cKglgqy2sKUwnRKJ9l0P1l3rlW9N4gnt7hAwHAHz5JatG/IjRD QhVG1+bD0vS+bLtK8Pj1FdktyKAVq6+r8sF7awSz9GlNdLWrb4lQJTHkZjYLVScrUTsRsu MNlAVvFWFtmbOgUvMbXa046w+Mv+U8M7T9Qs6igwJFZ8MXRriNJPRPmKoaSjdu+1FC5sig OPDreoBApD6tdC5mC4Y8i0xj6m4EKB8yReB/4ymgn7FxFYPHA6tRPTqU5DBfDw== 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 4Ny2X56nS0zVrQ; Wed, 18 Jan 2023 23:48:37 +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 30INmbxn070585; Wed, 18 Jan 2023 23:48:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 30INmbAR070584; Wed, 18 Jan 2023 23:48:37 GMT (envelope-from git) Date: Wed, 18 Jan 2023 23:48:37 GMT Message-Id: <202301182348.30INmbAR070584@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: ad23377e244c - stable/12 - xdr: store chars consistently List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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/12 X-Git-Reftype: branch X-Git-Commit: ad23377e244c1f234f922aacfdb32be4e0a9713e Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by brooks: URL: https://cgit.FreeBSD.org/src/commit/?id=ad23377e244c1f234f922aacfdb32be4e0a9713e commit ad23377e244c1f234f922aacfdb32be4e0a9713e Author: Brooks Davis AuthorDate: 2023-01-18 23:48:18 +0000 Commit: Brooks Davis CommitDate: 2023-01-18 23:48:18 +0000 xdr: store chars consistently Cast char's through unsigned char before storing as an integer in xdr_char(), this ensures that the encoded form is consistently not sign-extended following Open Solaris's example. Prior to this change, platforms with signed chars would sign extend values with the high bit set but ones with unsigned chars would not so 0xff would be stored as 0x000000ff on unsigned char platforms and 0xffffffff on signed char platforms. Decoding has the same result for either form so this is a largely cosmetic change, but it seems best to produce consistent output. For more discussion, see https://github.com/openzfs/zfs/issues/14173 Reviewed by: mav, imp Differential Revision: https://reviews.freebsd.org/D37992 (cherry picked from commit a872c37054172f3f7a03aef263ca5886a749771f) --- lib/libc/xdr/xdr.c | 8 ++++---- sys/xdr/xdr.c | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/libc/xdr/xdr.c b/lib/libc/xdr/xdr.c index fcf4e9029074..48b4cdbecd02 100644 --- a/lib/libc/xdr/xdr.c +++ b/lib/libc/xdr/xdr.c @@ -429,13 +429,13 @@ xdr_uint16_t(XDR *xdrs, uint16_t *u_int16_p) bool_t xdr_char(XDR *xdrs, char *cp) { - int i; + u_int i; - i = (*cp); - if (!xdr_int(xdrs, &i)) { + i = *((unsigned char *)cp); + if (!xdr_u_int(xdrs, &i)) { return (FALSE); } - *cp = i; + *((unsigned char *)cp) = i; return (TRUE); } diff --git a/sys/xdr/xdr.c b/sys/xdr/xdr.c index 349e53d02387..6e66b90453c4 100644 --- a/sys/xdr/xdr.c +++ b/sys/xdr/xdr.c @@ -372,13 +372,13 @@ xdr_uint16_t(XDR *xdrs, uint16_t *uint16_p) bool_t xdr_char(XDR *xdrs, char *cp) { - int i; + u_int i; - i = (*cp); - if (!xdr_int(xdrs, &i)) { + i = *((unsigned char *)cp); + if (!xdr_u_int(xdrs, &i)) { return (FALSE); } - *cp = i; + *((unsigned char *)cp) = i; return (TRUE); }