* contrib/addtiffo/tif_overview.c (TIFF_DownSample): Check buffer

size calculation for overflow.
This commit is contained in:
Bob Friesenhahn 2015-05-30 21:13:39 +00:00
parent 2b221734c6
commit 9626bb6db9
2 changed files with 22 additions and 2 deletions

View File

@ -1,5 +1,8 @@
2015-05-30 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> 2015-05-30 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
* contrib/addtiffo/tif_overview.c (TIFF_DownSample): Check buffer
size calculation for overflow.
* contrib/addtiffo/addtiffo.c (main): Possibly address Coverity * contrib/addtiffo/addtiffo.c (main): Possibly address Coverity
1024226 "Untrusted value as argument". 1024226 "Untrusted value as argument".

View File

@ -272,10 +272,27 @@ void TIFF_DownSample( unsigned char *pabySrcTile,
int nPixelGroupBytes = (nBitsPerPixel+nPixelSkewBits)/8; int nPixelGroupBytes = (nBitsPerPixel+nPixelSkewBits)/8;
unsigned char *pabySrc, *pabyDst; unsigned char *pabySrc, *pabyDst;
double *padfSamples; double *padfSamples;
size_t tpadfSamples_size, padfSamples_size;
assert( nBitsPerPixel >= 8 ); assert( nBitsPerPixel >= 8 );
padfSamples = (double *) malloc(sizeof(double) * nOMult * nOMult); /* sizeof(double) * nOMult * nOMult */
tpadfSamples_size=nOMult*nOMult;
if ((nOMult != 0) && (tpadfSamples_size/nOMult == (size_t) nOMult)) {
padfSamples_size=tpadfSamples_size;
tpadfSamples_size=padfSamples_size*sizeof(double);
if ((tpadfSamples_size / padfSamples_size) == sizeof(double))
padfSamples_size=tpadfSamples_size;
else
padfSamples_size=0;
} else {
padfSamples_size=0;
}
if (padfSamples_size == 0) {
/* TODO: This is an error condition */
return;
}
padfSamples = (double *) malloc(padfSamples_size);
/* ==================================================================== */ /* ==================================================================== */
/* Loop over scanline chunks to process, establishing where the */ /* Loop over scanline chunks to process, establishing where the */
@ -893,7 +910,7 @@ void TIFFBuildOverviews( TIFF *hTIFF, int nOverviews, int * panOvList,
/* /*
* Local Variables: * Local Variables:
* mode: c * mode: c
* c-basic-offset: 8 * c-basic-offset: 4
* fill-column: 78 * fill-column: 78
* End: * End:
*/ */