From 0674c870b403e0aa2f93cce4fe432287e425e845 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 12 Apr 2019 21:48:40 -0700 Subject: TinyCBOR: Fix parsing on big-endian machines Original commit from https://github.com/thiagomacieira/tinycbor/pull/1 Change-Id: I194d3f37471a49788a7bfffd1594ef5db19465fd Reviewed-by: Edward Welbourne --- src/3rdparty/tinycbor/src/cborparser.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/3rdparty') diff --git a/src/3rdparty/tinycbor/src/cborparser.c b/src/3rdparty/tinycbor/src/cborparser.c index 90a7d2ced6..2019e7b808 100644 --- a/src/3rdparty/tinycbor/src/cborparser.c +++ b/src/3rdparty/tinycbor/src/cborparser.c @@ -203,10 +203,13 @@ static CborError preparse_value(CborValue *it) it->extra = 0; /* read up to 16 bits into it->extra */ - if (bytesNeeded <= 2) { + if (bytesNeeded == 1) { + uint8_t extra; + read_bytes_unchecked(it, &extra, 1, bytesNeeded); + it->extra = extra; + } else if (bytesNeeded == 2) { read_bytes_unchecked(it, &it->extra, 1, bytesNeeded); - if (bytesNeeded == 2) - it->extra = cbor_ntohs(it->extra); + it->extra = cbor_ntohs(it->extra); } else { cbor_static_assert(CborIteratorFlag_IntegerValueTooLarge == (Value32Bit & 3)); cbor_static_assert((CborIteratorFlag_IntegerValueIs64Bit | -- cgit v1.2.3