kopia lustrzana https://github.com/micropython/micropython
extmod/uzlib: Fix C-language sequencing error with uzlib_get_byte calls.
The order of function calls in an arithmetic expression is undefined and so they must be written out as sequential statements. Thanks to @dv-extrarius for reporting this issue, see issue #3690.pull/3755/head
rodzic
4fa7d36cee
commit
5936168150
|
@ -394,9 +394,11 @@ static int tinf_inflate_uncompressed_block(TINF_DATA *d)
|
||||||
unsigned int length, invlength;
|
unsigned int length, invlength;
|
||||||
|
|
||||||
/* get length */
|
/* get length */
|
||||||
length = uzlib_get_byte(d) + 256 * uzlib_get_byte(d);
|
length = uzlib_get_byte(d);
|
||||||
|
length += 256 * uzlib_get_byte(d);
|
||||||
/* get one's complement of length */
|
/* get one's complement of length */
|
||||||
invlength = uzlib_get_byte(d) + 256 * uzlib_get_byte(d);
|
invlength = uzlib_get_byte(d);
|
||||||
|
invlength += 256 * uzlib_get_byte(d);
|
||||||
/* check length */
|
/* check length */
|
||||||
if (length != (~invlength & 0x0000ffff)) return TINF_DATA_ERROR;
|
if (length != (~invlength & 0x0000ffff)) return TINF_DATA_ERROR;
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue