diff options
Diffstat (limited to '')
-rw-r--r-- | external/libjpeg-turbo/ubsan.patch | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/external/libjpeg-turbo/ubsan.patch b/external/libjpeg-turbo/ubsan.patch new file mode 100644 index 000000000..33d3c15a8 --- /dev/null +++ b/external/libjpeg-turbo/ubsan.patch @@ -0,0 +1,39 @@ +--- jcphuff.c ++++ jcphuff.c +@@ -14,6 +14,7 @@ + * suspension. + */ + ++#include <stdint.h> + #define JPEG_INTERNALS + #include "jinclude.h" + #include "jpeglib.h" +@@ -255,7 +256,7 @@ + if (c == 0xFF) { /* need to stuff a zero byte? */ + emit_byte(entropy, 0); + } +- put_buffer <<= 8; ++ put_buffer = (uint_least32_t) put_buffer << 8; + put_bits -= 8; + } + +--- jdarith.c ++++ jdarith.c +@@ -306,7 +306,7 @@ + while (m >>= 1) + if (arith_decode(cinfo, st)) v |= m; + v += 1; if (sign) v = -v; +- entropy->last_dc_val[ci] += v; ++ entropy->last_dc_val[ci] = (entropy->last_dc_val[ci] + v) & 0xffff; + } + + /* Scale and output the DC coefficient (assumes jpeg_natural_order[0]=0) */ +@@ -564,7 +564,7 @@ + while (m >>= 1) + if (arith_decode(cinfo, st)) v |= m; + v += 1; if (sign) v = -v; +- entropy->last_dc_val[ci] += v; ++ entropy->last_dc_val[ci] = (entropy->last_dc_val[ci] + v) & 0xffff; + } + + if (block) |