CVS commit: src/external/cddl/osnet/dist/common/nvpair
Module Name:src Committed By: hannken Date: Fri May 21 17:32:49 UTC 2021 Modified Files: src/external/cddl/osnet/dist/common/nvpair: nvpair.c Log Message: Replace the Solaris style endian check (exactly one of _LITTLE_ENDIAN or _BIG_ENDIAN is defined) with standard check "#if BYTE_ORDER == BIG_ENDIAN" like we do it elseware. Should fix PR 56191 (ZFS tests fail on sparc64) To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/external/cddl/osnet/dist/common/nvpair/nvpair.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/common/nvpair/nvpair.c diff -u src/external/cddl/osnet/dist/common/nvpair/nvpair.c:1.5 src/external/cddl/osnet/dist/common/nvpair/nvpair.c:1.6 --- src/external/cddl/osnet/dist/common/nvpair/nvpair.c:1.5 Mon Mar 2 15:45:33 2020 +++ src/external/cddl/osnet/dist/common/nvpair/nvpair.c Fri May 21 17:32:49 2021 @@ -2255,11 +2255,11 @@ nvlist_common(nvlist_t *nvl, char *buf, int err = 0; nvstream_t nvs; int nvl_endian; -#ifdef _LITTLE_ENDIAN - int host_endian = 1; -#else +#if BYTE_ORDER == BIG_ENDIAN int host_endian = 0; -#endif /* _LITTLE_ENDIAN */ +#else + int host_endian = 1; +#endif /* BYTE_ORDER */ nvs_header_t *nvh = (void *)buf; if (buflen == NULL || nvl == NULL ||
CVS commit: src/external/cddl/osnet/dist/common/nvpair
Module Name:src Committed By: kamil Date: Mon Mar 2 15:45:33 UTC 2020 Modified Files: src/external/cddl/osnet/dist/common/nvpair: nvpair.c Log Message: Fix undefined behavior in misaligned pointer usage Detected by UBSan and already fixed upstream. Cherry-pick: >From aa0218d6a12814fac50b287214f9f3b0b99e11b1 Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Tue, 7 Jan 2014 23:24:37 +0100 Subject: [PATCH] Fix nvlist 'Bus Error' for Sparc The mis-aligned memory accesses in nvpair_native_embedded() and nvpair_native_embedded_array() will cause a 'Bus Error' for architectures such as Sparc which not fully byte addressible. To avoid this issue care is taken to avoid dereferencing the potentially mis-aligned packed nvlist_t. Signed-off-by: Brian Behlendorf Signed-off-by: Ned Bass Signed-off-by: marku89 Issue #1700 To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/external/cddl/osnet/dist/common/nvpair/nvpair.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/common/nvpair/nvpair.c diff -u src/external/cddl/osnet/dist/common/nvpair/nvpair.c:1.4 src/external/cddl/osnet/dist/common/nvpair/nvpair.c:1.5 --- src/external/cddl/osnet/dist/common/nvpair/nvpair.c:1.4 Mon May 28 21:05:04 2018 +++ src/external/cddl/osnet/dist/common/nvpair/nvpair.c Mon Mar 2 15:45:33 2020 @@ -2586,7 +2586,8 @@ nvpair_native_embedded(nvstream_t *nvs, * structure. The address may not be aligned, so we have * to use bzero. */ - bzero(>nvl_priv, sizeof (packed->nvl_priv)); + bzero((char *)packed + offsetof(nvlist_t, nvl_priv), + sizeof (uint64_t)); } return (nvs_embedded(nvs, EMBEDDED_NVL(nvp))); @@ -2614,7 +2615,8 @@ nvpair_native_embedded_array(nvstream_t * packed structure. The address may not be aligned, * so we have to use bzero. */ - bzero(>nvl_priv, sizeof (packed->nvl_priv)); + bzero((char *)packed + offsetof(nvlist_t, nvl_priv), + sizeof (uint64_t)); } return (nvs_embedded_nvl_array(nvs, nvp, NULL));
CVS commit: src/external/cddl/osnet/dist/common/nvpair
Module Name:src Committed By: riastradh Date: Fri Apr 10 22:29:35 UTC 2015 Modified Files: src/external/cddl/osnet/dist/common/nvpair: nvpair.c Log Message: Initialize variables. Don't bother supporting nv doubles. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/external/cddl/osnet/dist/common/nvpair/nvpair.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/common/nvpair/nvpair.c diff -u src/external/cddl/osnet/dist/common/nvpair/nvpair.c:1.2 src/external/cddl/osnet/dist/common/nvpair/nvpair.c:1.3 --- src/external/cddl/osnet/dist/common/nvpair/nvpair.c:1.2 Thu Jan 3 16:41:51 2013 +++ src/external/cddl/osnet/dist/common/nvpair/nvpair.c Fri Apr 10 22:29:35 2015 @@ -1606,10 +1606,10 @@ nvlist_lookup_nvpair_ei_sep(nvlist_t *nv { nvpair_t *nvp; const char *np; - char *sepp; + char *sepp = NULL; char *idxp, *idxep; nvlist_t **nva; - long idx; + long idx = -1; int n; if (ip) @@ -3008,11 +3008,13 @@ nvs_xdr_nvp_op(nvstream_t *nvs, nvpair_t */ ret = xdr_longlong_t(xdr, (void *)buf); break; +#ifndef __NetBSD__ #if !defined(_KERNEL) case DATA_TYPE_DOUBLE: ret = xdr_double(xdr, (void *)buf); break; #endif +#endif case DATA_TYPE_STRING: ret = xdr_string(xdr, buf, buflen - 1); break;