diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2019-04-12 21:48:40 -0700 |
---|---|---|
committer | Kai Koehne <kai.koehne@qt.io> | 2019-04-25 05:22:24 +0000 |
commit | 0674c870b403e0aa2f93cce4fe432287e425e845 (patch) | |
tree | 2a4d9022d3e3b6d69b8b256878489c76d32083d5 /src | |
parent | a367c85e530fde47923ff8a6e70881e69990346e (diff) |
TinyCBOR: Fix parsing on big-endian machines
Original commit from https://github.com/thiagomacieira/tinycbor/pull/1
Change-Id: I194d3f37471a49788a7bfffd1594ef5db19465fd
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/3rdparty/tinycbor/src/cborparser.c | 9 |
1 files changed, 6 insertions, 3 deletions
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 | |