diff options
author | Even Rouault <even.rouault@spatialys.com> | 2017-05-14 10:17:27 +0000 |
---|---|---|
committer | Even Rouault <even.rouault@spatialys.com> | 2017-05-14 10:17:27 +0000 |
commit | 352c653057cbc17fcb074fc46b32a14798aaf362 (patch) | |
tree | 65c0bf2d63d6807f2b99b80289fe40533a490f80 /libtiff/tif_luv.c | |
parent | 8d4e4591028e2cdac20a2718480f4252664aec88 (diff) | |
download | libtiff-git-352c653057cbc17fcb074fc46b32a14798aaf362.tar.gz |
* libtiff/tif_luv.c: LogL16InitState(): avoid excessive memory
allocation when RowsPerStrip tag is missing.
Credit to OSS-Fuzz (locally run, on GDAL)
Diffstat (limited to 'libtiff/tif_luv.c')
-rw-r--r-- | libtiff/tif_luv.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/libtiff/tif_luv.c b/libtiff/tif_luv.c index 08d8b4f3..59d0a74c 100644 --- a/libtiff/tif_luv.c +++ b/libtiff/tif_luv.c @@ -1,4 +1,4 @@ -/* $Id: tif_luv.c,v 1.46 2017-05-13 18:29:38 erouault Exp $ */ +/* $Id: tif_luv.c,v 1.47 2017-05-14 10:17:27 erouault Exp $ */ /* * Copyright (c) 1997 Greg Ward Larson @@ -1314,8 +1314,10 @@ LogL16InitState(TIFF* tif) } if( isTiled(tif) ) sp->tbuflen = multiply_ms(td->td_tilewidth, td->td_tilelength); - else + else if( td->td_rowsperstrip != (uint32)-1 ) sp->tbuflen = multiply_ms(td->td_imagewidth, td->td_rowsperstrip); + else + sp->tbuflen = multiply_ms(td->td_imagewidth, td->td_imagelength); if (multiply_ms(sp->tbuflen, sizeof (int16)) == 0 || (sp->tbuf = (uint8*) _TIFFmalloc(sp->tbuflen * sizeof (int16))) == NULL) { TIFFErrorExt(tif->tif_clientdata, module, "No space for SGILog translation buffer"); |