diff options
author | Kari Oikarinen <kari.oikarinen@qt.io> | 2019-11-07 09:28:59 +0200 |
---|---|---|
committer | Kari Oikarinen <kari.oikarinen@qt.io> | 2019-11-07 09:28:59 +0200 |
commit | 598e1db3a082d2bb473571c6ae3359e0c687c63b (patch) | |
tree | e88d80d6cf6aaeaf6afb8f37d4bc4404405e2bd2 /src/3rdparty/libtiff/libtiff/tif_aux.c | |
parent | 00187760aaa137b68e74186ee0cbfb3e1da72281 (diff) | |
parent | 6d4cf4b392c53e3edb8573d89b5ca4b6257bb99f (diff) |
Merge 5.12 into 5.12.6
Change-Id: Icfbebe5c86f6c8958f1fc60f98a034d9e338e076
Diffstat (limited to 'src/3rdparty/libtiff/libtiff/tif_aux.c')
-rw-r--r-- | src/3rdparty/libtiff/libtiff/tif_aux.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/src/3rdparty/libtiff/libtiff/tif_aux.c b/src/3rdparty/libtiff/libtiff/tif_aux.c index 33fb8a4..8188db5 100644 --- a/src/3rdparty/libtiff/libtiff/tif_aux.c +++ b/src/3rdparty/libtiff/libtiff/tif_aux.c @@ -30,31 +30,28 @@ #include "tiffiop.h" #include "tif_predict.h" #include <math.h> +#include <float.h> uint32 _TIFFMultiply32(TIFF* tif, uint32 first, uint32 second, const char* where) { - uint32 bytes = first * second; - - if (second && bytes / second != first) { + if (second && first > TIFF_UINT32_MAX / second) { TIFFErrorExt(tif->tif_clientdata, where, "Integer overflow in %s", where); - bytes = 0; + return 0; } - return bytes; + return first * second; } uint64 _TIFFMultiply64(TIFF* tif, uint64 first, uint64 second, const char* where) { - uint64 bytes = first * second; - - if (second && bytes / second != first) { + if (second && first > TIFF_UINT64_MAX / second) { TIFFErrorExt(tif->tif_clientdata, where, "Integer overflow in %s", where); - bytes = 0; + return 0; } - return bytes; + return first * second; } tmsize_t @@ -396,6 +393,15 @@ _TIFFUInt64ToDouble(uint64 ui64) } } +float _TIFFClampDoubleToFloat( double val ) +{ + if( val > FLT_MAX ) + return FLT_MAX; + if( val < -FLT_MAX ) + return -FLT_MAX; + return (float)val; +} + int _TIFFSeekOK(TIFF* tif, toff_t off) { /* Huge offsets, especially -1 / UINT64_MAX, can cause issues */ |