Changeset 13500
- Timestamp:
- 01/08/08 17:17:42 (8 months ago)
- Files:
-
- trunk/gdal/frmts/aigrid/gridlib.c (modified) (3 diffs)
- trunk/gdal/frmts/airsar/airsardataset.cpp (modified) (1 diff)
- trunk/gdal/frmts/bmp/bmpdataset.cpp (modified) (3 diffs)
- trunk/gdal/frmts/bsb/bsb_read.c (modified) (1 diff)
- trunk/gdal/frmts/gsg/gsagdataset.cpp (modified) (4 diffs)
- trunk/gdal/frmts/gsg/gsbgdataset.cpp (modified) (4 diffs)
- trunk/gdal/frmts/hfa/hfaband.cpp (modified) (7 diffs)
- trunk/gdal/frmts/hfa/hfadataset.cpp (modified) (1 diff)
- trunk/gdal/frmts/hfa/hfaentry.cpp (modified) (2 diffs)
- trunk/gdal/frmts/hfa/hfaopen.cpp (modified) (3 diffs)
- trunk/gdal/frmts/hfa/img2tif.cpp (modified) (4 diffs)
- trunk/gdal/frmts/idrisi/IdrisiDataset.cpp (modified) (1 diff)
- trunk/gdal/frmts/jp2kak/jp2kakdataset.cpp (modified) (1 diff)
- trunk/gdal/frmts/mem/memdataset.cpp (modified) (1 diff)
- trunk/gdal/frmts/nitf/rpftocfile.cpp (modified) (1 diff)
- trunk/gdal/frmts/usgsdem/usgsdem_create.cpp (modified) (1 diff)
- trunk/gdal/frmts/vrt/vrtfilters.cpp (modified) (2 diffs)
- trunk/gdal/frmts/vrt/vrtsources.cpp (modified) (1 diff)
- trunk/gdal/frmts/vrt/vrtwarped.cpp (modified) (1 diff)
- trunk/gdal/frmts/xpm/xpmdataset.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/gdal/frmts/aigrid/gridlib.c
r12836 r13500 831 831 VSIFReadL( &nValue, 1, 4, fp ); 832 832 833 // FIXME? : risk of overflow in multiplication 833 834 nLength = CPL_MSBWORD32(nValue) * 2; 834 835 … … 838 839 /* -------------------------------------------------------------------- */ 839 840 psTInfo->nBlocks = (nLength-100) / 8; 840 panIndex = (GUInt32 *) VSIMalloc (psTInfo->nBlocks *8);841 panIndex = (GUInt32 *) VSIMalloc2(psTInfo->nBlocks, 8); 841 842 if (panIndex == NULL) 842 843 { … … 854 855 /* Allocate AIGInfo block info arrays. */ 855 856 /* -------------------------------------------------------------------- */ 856 psTInfo->panBlockOffset = (GUInt32 *) VSIMalloc (4 *psTInfo->nBlocks);857 psTInfo->panBlockSize = (int *) VSIMalloc (4 *psTInfo->nBlocks);857 psTInfo->panBlockOffset = (GUInt32 *) VSIMalloc2(4, psTInfo->nBlocks); 858 psTInfo->panBlockSize = (int *) VSIMalloc2(4, psTInfo->nBlocks); 858 859 if (psTInfo->panBlockOffset == NULL || 859 860 psTInfo->panBlockSize == NULL) trunk/gdal/frmts/airsar/airsardataset.cpp
r13044 r13500 319 319 if( pabyCompressedLine == NULL ) 320 320 { 321 pabyCompressedLine = (GByte *) VSIMalloc (nRasterXSize *10);322 323 padfMatrix = (double *) VSIMalloc (sizeof(double) * nRasterXSize*10);321 pabyCompressedLine = (GByte *) VSIMalloc2(nRasterXSize, 10); 322 323 padfMatrix = (double *) VSIMalloc2(10* sizeof(double), nRasterXSize); 324 324 if (pabyCompressedLine == NULL || 325 325 padfMatrix == NULL) trunk/gdal/frmts/bmp/bmpdataset.cpp
r12793 r13500 286 286 // boundary 287 287 nBlockXSize = poDS->GetRasterXSize(); 288 // FIXME? : risk of overflow in multiplication and addition 288 289 nScanSize = 289 290 ((poDS->GetRasterXSize() * poDS->sInfoHeader.iBitCount + 31) & ~31) / 8; … … 686 687 687 688 iComprSize = poDS->sFileHeader.iSize - poDS->sFileHeader.iOffBits; 689 // FIXME? : risk of overflow in multiplication 688 690 iUncomprSize = poDS->GetRasterXSize() * poDS->GetRasterYSize(); 689 691 pabyComprBuf = (GByte *) VSIMalloc( iComprSize ); … … 1137 1139 poDS->nColorTableSize = 1 << poDS->sInfoHeader.iBitCount; 1138 1140 poDS->pabyColorTable = 1139 (GByte *)CPLMalloc( poDS->nColorElems * poDS->nColorTableSize ); 1141 (GByte *)VSIMalloc2( poDS->nColorElems, poDS->nColorTableSize ); 1142 if (poDS->pabyColorTable == NULL) 1143 { 1144 CPLError(CE_Failure, CPLE_OutOfMemory, "Color palette will be ignored"); 1145 poDS->nColorTableSize = 0; 1146 break; 1147 } 1148 1140 1149 VSIFSeekL( poDS->fp, BFH_SIZE + poDS->sInfoHeader.iSize, SEEK_SET ); 1141 1150 VSIFReadL( poDS->pabyColorTable, poDS->nColorElems, trunk/gdal/frmts/bsb/bsb_read.c
r12838 r13500 402 402 /* -------------------------------------------------------------------- */ 403 403 psInfo->panLineOffset = (int *) 404 VSIMalloc (sizeof(int) *psInfo->nYSize);404 VSIMalloc2(sizeof(int), psInfo->nYSize); 405 405 if (psInfo->panLineOffset == NULL) 406 406 { trunk/gdal/frmts/gsg/gsagdataset.cpp
r12155 r13500 210 210 211 211 { 212 double *padfRowValues = (double *)VSIMalloc ( nBlockXSize *sizeof(double) );212 double *padfRowValues = (double *)VSIMalloc2( nBlockXSize, sizeof(double) ); 213 213 if( padfRowValues == NULL ) 214 214 { … … 551 551 || nMinZRow < 0 || nMaxZRow < 0 ) 552 552 { 553 padfRowMinZ = (double *)VSIMalloc ( nRasterYSize*sizeof(double) );553 padfRowMinZ = (double *)VSIMalloc2( nRasterYSize,sizeof(double) ); 554 554 if( padfRowMinZ == NULL ) 555 555 { … … 559 559 } 560 560 561 padfRowMaxZ = (double *)VSIMalloc ( nRasterYSize*sizeof(double) );561 padfRowMaxZ = (double *)VSIMalloc2( nRasterYSize,sizeof(double) ); 562 562 if( padfRowMaxZ == NULL ) 563 563 { … … 1633 1633 /* Copy band data. */ 1634 1634 /* -------------------------------------------------------------------- */ 1635 double *pdfData = (double *)VSIMalloc (nXSize *sizeof( double ) );1635 double *pdfData = (double *)VSIMalloc2( nXSize, sizeof( double ) ); 1636 1636 if( pdfData == NULL ) 1637 1637 { trunk/gdal/frmts/gsg/gsbgdataset.cpp
r12155 r13500 191 191 192 192 { 193 float *pafRowVals = (float *)VSIMalloc ( nRasterXSize *4 );193 float *pafRowVals = (float *)VSIMalloc2( nRasterXSize, 4 ); 194 194 195 195 if( pafRowVals == NULL ) … … 334 334 || nMinZRow < 0 || nMaxZRow < 0 ) 335 335 { 336 pafRowMinZ = (float *)VSIMalloc ( nRasterYSize*sizeof(float) );336 pafRowMinZ = (float *)VSIMalloc2( nRasterYSize,sizeof(float) ); 337 337 if( pafRowMinZ == NULL ) 338 338 { … … 342 342 } 343 343 344 pafRowMaxZ = (float *)VSIMalloc ( nRasterYSize*sizeof(float) );344 pafRowMaxZ = (float *)VSIMalloc2( nRasterYSize,sizeof(float) ); 345 345 if( pafRowMaxZ == NULL ) 346 346 { … … 1004 1004 /* Copy band data. */ 1005 1005 /* -------------------------------------------------------------------- */ 1006 float *pfData = (float *)VSIMalloc (nXSize *sizeof( float ) );1006 float *pfData = (float *)VSIMalloc2( nXSize, sizeof( float ) ); 1007 1007 if( pfData == NULL ) 1008 1008 { trunk/gdal/frmts/hfa/hfaband.cpp
r13359 r13500 67 67 dfNoData = 0.0; 68 68 69 if (nBlockXSize <= 0 || nBlockYSize <= 0) 70 { 69 if (nWidth <= 0 || nHeight <= 0 || nBlockXSize <= 0 || nBlockYSize <= 0) 70 { 71 nWidth = nHeight = 0; 71 72 CPLError(CE_Failure, CPLE_AppDefined, 72 "HFABand::HFABand : (n BlockXSize <= 0 || nBlockYSize <= 0)");73 "HFABand::HFABand : (nWidth <= 0 || nHeight <= 0 || nBlockXSize <= 0 || nBlockYSize <= 0)"); 73 74 return; 74 75 } 75 76 if (HFAGetDataTypeBits(nDataType) == 0) 77 { 78 nWidth = nHeight = 0; 79 CPLError(CE_Failure, CPLE_AppDefined, 80 "HFABand::HFABand : nDataType=%d unhandled", nDataType); 81 return; 82 } 83 84 /* FIXME? : risk of overflow in additions and multiplication */ 76 85 nBlocksPerRow = (nWidth + nBlockXSize - 1) / nBlockXSize; 77 86 nBlocksPerColumn = (nHeight + nBlockYSize - 1) / nBlockYSize; … … 175 184 CPLRealloc(papoOverviews, sizeof(void*) * ++nOverviews ); 176 185 papoOverviews[nOverviews-1] = new HFABand( psHFA, poOvEntry ); 186 if (papoOverviews[nOverviews-1]->nWidth == 0) 187 { 188 nWidth = nHeight = 0; 189 delete papoOverviews[nOverviews-1]; 190 papoOverviews[nOverviews-1] = NULL; 191 return; 192 } 177 193 } 178 194 } … … 196 212 CPLRealloc(papoOverviews, sizeof(void*) * ++nOverviews ); 197 213 papoOverviews[nOverviews-1] = new HFABand( psInfo, poChild ); 214 if (papoOverviews[nOverviews-1]->nWidth == 0) 215 { 216 nWidth = nHeight = 0; 217 delete papoOverviews[nOverviews-1]; 218 papoOverviews[nOverviews-1] = NULL; 219 return; 220 } 198 221 } 199 222 } … … 255 278 } 256 279 257 panBlockStart = (vsi_l_offset *)VSIMalloc (sizeof(vsi_l_offset) *nBlocks);258 panBlockSize = (int *) VSIMalloc (sizeof(int) *nBlocks);259 panBlockFlag = (int *) VSIMalloc (sizeof(int) *nBlocks);280 panBlockStart = (vsi_l_offset *)VSIMalloc2(sizeof(vsi_l_offset), nBlocks); 281 panBlockSize = (int *) VSIMalloc2(sizeof(int), nBlocks); 282 panBlockFlag = (int *) VSIMalloc2(sizeof(int), nBlocks); 260 283 261 284 if (panBlockStart == NULL || panBlockSize == NULL || panBlockFlag == NULL) … … 361 384 /* Allocate blockmap. */ 362 385 /* -------------------------------------------------------------------- */ 363 panBlockFlag = (int *) VSIMalloc (sizeof(int) *nBlocks);386 panBlockFlag = (int *) VSIMalloc2(sizeof(int), nBlocks); 364 387 if (panBlockFlag == NULL) 365 388 { … … 1383 1406 return( CE_Failure ); 1384 1407 1408 /* FIXME? : we could also check that nPCTColors is not too big */ 1385 1409 nPCTColors = poColumnEntry->GetIntField( "numRows" ); 1386 1410 for( iColumn = 0; iColumn < 4; iColumn++ ) 1387 1411 { 1388 apadfPCT[iColumn] = (double *)CPLMalloc(sizeof(double)*nPCTColors); 1412 apadfPCT[iColumn] = (double *)VSIMalloc2(sizeof(double),nPCTColors); 1413 if (apadfPCT[iColumn] == NULL) 1414 { 1415 CPLError(CE_Failure, CPLE_OutOfMemory, "Color palette will be ignored"); 1416 return CE_Failure; 1417 } 1418 1389 1419 if( iColumn == 0 ) 1390 1420 poColumnEntry = poNode->GetNamedChild("Descriptor_Table.Red"); … … 1405 1435 else 1406 1436 { 1407 VSIFSeekL( psInfo->fp, poColumnEntry->GetIntField("columnDataPtr"), 1408 SEEK_SET ); 1409 VSIFReadL( apadfPCT[iColumn], sizeof(double), nPCTColors, 1410 psInfo->fp); 1437 if (VSIFSeekL( psInfo->fp, poColumnEntry->GetIntField("columnDataPtr"), 1438 SEEK_SET ) < 0) 1439 { 1440 CPLError( CE_Failure, CPLE_FileIO, 1441 "VSIFSeekL() failed in HFABand::GetPCT()." ); 1442 return CE_Failure; 1443 } 1444 if (VSIFReadL( apadfPCT[iColumn], sizeof(double), nPCTColors, 1445 psInfo->fp) != (size_t)nPCTColors) 1446 { 1447 CPLError( CE_Failure, CPLE_FileIO, 1448 "VSIFReadL() failed in HFABand::GetPCT()." ); 1449 return CE_Failure; 1450 } 1411 1451 1412 1452 for( i = 0; i < nPCTColors; i++ ) trunk/gdal/frmts/hfa/hfadataset.cpp
r13343 r13500 877 877 { 878 878 int nPixCount = nBlockXSize * nBlockYSize; 879 pabyOutBuf = (GByte *) CPLMalloc(nPixCount); 879 pabyOutBuf = (GByte *) VSIMalloc2(nBlockXSize, nBlockYSize); 880 if (pabyOutBuf == NULL) 881 return CE_Failure; 880 882 881 883 if( nHFADataType == EPT_u1 ) trunk/gdal/frmts/hfa/hfaentry.cpp
r12415 r13500 268 268 /* Allocate buffer, and read data. */ 269 269 /* -------------------------------------------------------------------- */ 270 pabyData = (GByte *) CPLMalloc(nDataSize); 270 pabyData = (GByte *) VSIMalloc(nDataSize); 271 if (pabyData == NULL) 272 { 273 CPLError( CE_Failure, CPLE_OutOfMemory, 274 "VSIMalloc() failed in HFAEntry::LoadData()." ); 275 return; 276 } 277 271 278 if( VSIFSeekL( psHFA->fp, nDataPos, SEEK_SET ) < 0 ) 272 279 { … … 354 361 LoadData(); 355 362 356 if( p oType == NULL )363 if( pabyData == NULL || poType == NULL ) 357 364 return; 358 365 trunk/gdal/frmts/hfa/hfaopen.cpp
r13343 r13500 357 357 sizeof(HFABand *) * (psInfo->nBands+1)); 358 358 psInfo->papoBand[psInfo->nBands] = new HFABand( psInfo, poNode ); 359 if (psInfo->papoBand[psInfo->nBands]->nWidth == 0) 360 { 361 delete psInfo->papoBand[psInfo->nBands]; 362 return CE_Failure; 363 } 359 364 psInfo->nBands++; 360 365 } … … 2382 2387 /* read up to nMaxNumChars bytes from the indicated location. */ 2383 2388 /* allocate required space temporarily */ 2384 /* nMaxNumChars should have been set by GDAL orginally so we can*/2385 /* trust it .*/2389 /* nMaxNumChars should have been set by GDAL orginally so we should*/ 2390 /* trust it, but who knows... */ 2386 2391 /* -------------------------------------------------------------------- */ 2387 2392 int nMaxNumChars = poColumn->GetIntField( "maxNumChars" ); … … 2393 2398 else 2394 2399 { 2395 char *pszMDValue = (char*) CPLMalloc(nMaxNumChars); 2400 char *pszMDValue = (char*) VSIMalloc(nMaxNumChars); 2401 if (pszMDValue == NULL) 2402 { 2403 CPLError(CE_Failure, CPLE_OutOfMemory, 2404 "HFAGetMetadata : Out of memory while allocating %d bytes", nMaxNumChars); 2405 continue; 2406 } 2396 2407 2397 2408 if( VSIFSeekL( hHFA->fp, columnDataPtr, SEEK_SET ) != 0 ) trunk/gdal/frmts/hfa/img2tif.cpp
r10645 r13500 582 582 int iTileX; 583 583 584 // FIXME? : risk of overflow in multiplication 584 585 pabyTile = (unsigned char *) VSIMalloc(nTileXSize*nTileYSize*nDataBits/8); 585 586 if( pabyTile == NULL ) … … 653 654 /* and another big enough to hold a strip on the output file. */ 654 655 /* -------------------------------------------------------------------- */ 656 //FIXME? : risk of overflow in multiplication 655 657 pabyRowOfTiles = (unsigned char *) 656 658 VSIMalloc((nStripWidth * nTileYSize * nDataBits) / 8); … … 662 664 fprintf( stderr, 663 665 "Out of memory allocating working buffer(s).\n" ); 666 CPLFree(pabyRowOfTiles); 667 CPLFree(pabyStrip); 664 668 return( CE_Failure ); 665 669 } … … 988 992 989 993 poOverviewBand = new HFABand( psInfo, poSubNode ); 994 if (poOverviewBand->nWidth == 0) 995 { 996 delete poOverviewBand; 997 return CE_Failure; 998 } 990 999 991 1000 if( RRD2Tiff( poOverviewBand, hTIFF, nPhotometric, nCompressFlag ) trunk/gdal/frmts/idrisi/IdrisiDataset.cpp
r12896 r13500 1240 1240 // -------------------------------------------------------------------- 1241 1241 1242 // FIXME : risk of overflow in multiplication 1242 1243 nRecordSize = poDS->GetRasterXSize() * GDALGetDataTypeSize( eDataType ) / 8 * poDS->nBands; 1243 1244 pabyScanLine = ( GByte * ) VSIMalloc( nRecordSize ); trunk/gdal/frmts/jp2kak/jp2kakdataset.cpp
r13206 r13500 1610 1610 { 1611 1611 GByte *pabyIntermediate = (GByte *) 1612 VSIMalloc ( dims.size.x * dims.size.y *nBandCount );1612 VSIMalloc3(dims.size.x, dims.size.y, nBandCount ); 1613 1613 if( pabyIntermediate == NULL ) 1614 1614 { trunk/gdal/frmts/mem/memdataset.cpp
r11582 r13500 733 733 for( iBand = 0; iBand < nBands; iBand++ ) 734 734 { 735 // FIXME? : risk of overflow in multiplication 735 736 papBandData[iBand] = (GByte *) VSICalloc( nWordSize, nXSize * nYSize ); 736 737 if( papBandData[iBand] == NULL ) trunk/gdal/frmts/nitf/rpftocfile.cpp
r12834 r13500 318 318 319 319 toc->entries[i].frameEntries = (RPFTocFrameEntry*) 320 VSIMalloc (toc->entries[i].nVertFrames * toc->entries[i].nHorizFrames *sizeof(RPFTocFrameEntry));320 VSIMalloc3(toc->entries[i].nVertFrames, toc->entries[i].nHorizFrames, sizeof(RPFTocFrameEntry)); 321 321 if (toc->entries[i].frameEntries == NULL) 322 322 { trunk/gdal/frmts/usgsdem/usgsdem_create.cpp
r12490 r13500 1269 1269 /* -------------------------------------------------------------------- */ 1270 1270 psWInfo->panData = 1271 (GInt16 *) VSIMalloc ( 2 * psWInfo->nXSize *psWInfo->nYSize );1271 (GInt16 *) VSIMalloc3( 2, psWInfo->nXSize, psWInfo->nYSize ); 1272 1272 if( psWInfo->panData == NULL ) 1273 1273 { trunk/gdal/frmts/vrt/vrtfilters.cpp
r10645 r13500 184 184 GByte *pabyWorkData; 185 185 186 // FIXME? : risk of multiplication overflow 186 187 pabyWorkData = (GByte *) 187 188 VSICalloc( nExtraXSize * nExtraYSize, … … 209 210 { 210 211 pabyOutData = (GByte *) 211 VSIMalloc ( nBufXSize * nBufYSize *nPixelOffset );212 VSIMalloc3(nBufXSize, nBufYSize, nPixelOffset ); 212 213 213 214 if( pabyOutData == NULL ) trunk/gdal/frmts/vrt/vrtsources.cpp
r11864 r13500 588 588 float *pafSrc; 589 589 590 pafSrc = (float *) VSIMalloc (sizeof(float) * nReqXSize *nReqYSize);590 pafSrc = (float *) VSIMalloc3(sizeof(float), nReqXSize, nReqYSize); 591 591 if( pafSrc == NULL ) 592 592 { trunk/gdal/frmts/vrt/vrtwarped.cpp
r11878 r13500 806 806 int nWordSize = (GDALGetDataTypeSize(psWO->eWorkingDataType) / 8); 807 807 808 // FIXME? : risk of overflow in multiplication if nBlockXSize or nBlockYSize are very large 808 809 nDstBufferSize = nBlockXSize * nBlockYSize * psWO->nBandCount * nWordSize; 809 810 trunk/gdal/frmts/xpm/xpmdataset.cpp
r10645 r13500 584 584 GByte *pabyImage; 585 585 586 pabyImage = (GByte *) VSIMalloc (*pnXSize **pnYSize);586 pabyImage = (GByte *) VSIMalloc2(*pnXSize, *pnYSize); 587 587 if( pabyImage == NULL ) 588 588 {
