Skip to content

Commit d393c16

Browse files
mitya57thiagomacieira
authored andcommitted
Parser: fix reading it->extra on big endian when bytesNeeded == 1
Signed-off-by: Dmitry Shachnev <[email protected]>
1 parent 8adc3cf commit d393c16

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/cborparser.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -203,10 +203,13 @@ static CborError preparse_value(CborValue *it)
203203
it->extra = 0;
204204

205205
/* read up to 16 bits into it->extra */
206-
if (bytesNeeded <= 2) {
206+
if (bytesNeeded == 1) {
207+
uint8_t extra;
208+
read_bytes_unchecked(it, &extra, 1, bytesNeeded);
209+
it->extra = extra;
210+
} else if (bytesNeeded == 2) {
207211
read_bytes_unchecked(it, &it->extra, 1, bytesNeeded);
208-
if (bytesNeeded == 2)
209-
it->extra = cbor_ntohs(it->extra);
212+
it->extra = cbor_ntohs(it->extra);
210213
} else {
211214
cbor_static_assert(CborIteratorFlag_IntegerValueTooLarge == (Value32Bit & 3));
212215
cbor_static_assert((CborIteratorFlag_IntegerValueIs64Bit |

0 commit comments

Comments
 (0)