Changeset 12324

Show
Ignore:
Timestamp:
10/04/07 15:47:32 (1 year ago)
Author:
warmerdam
Message:

avoid confusion on empty BASEDATA objects (msg1-200509232357_tmp_difer.img)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/gdal/frmts/hfa/hfa_p.h

    r11303 r12324  
    307307     
    308308    int         GetInstBytes( GByte *, int ); 
    309     int         GetInstCount( GByte * pabyData ); 
     309    int         GetInstCount( GByte * pabyData, int nDataSize ); 
    310310}; 
    311311 
  • trunk/gdal/frmts/hfa/hfafield.cpp

    r12301 r12324  
    699699    int                 nIntRet = 0; 
    700700    double              dfDoubleRet = 0.0; 
    701     int                 nInstItemCount = GetInstCount( pabyData ); 
     701    int                 nInstItemCount = GetInstCount( pabyData, nDataSize ); 
    702702    GByte               *pabyRawData = NULL; 
    703703 
     
    836836          GInt32 nRows, nColumns; 
    837837          GInt16 nBaseItemType; 
     838 
     839          if( nDataSize < 12 ) 
     840              return FALSE; 
    838841         
    839842          memcpy( &nRows, pabyData, 4 ); 
     
    10801083/************************************************************************/ 
    10811084 
    1082 int HFAField::GetInstCount( GByte * pabyData
     1085int HFAField::GetInstCount( GByte * pabyData, int nDataSize
    10831086 
    10841087{ 
     
    10891092        GInt32 nRows, nColumns; 
    10901093 
     1094        if( nDataSize < 20 ) 
     1095            return 0; 
     1096 
    10911097        memcpy( &nRows, pabyData+8, 4 ); 
    10921098        HFAStandard( 4, &nRows ); 
     
    11001106        GInt32 nCount; 
    11011107 
     1108        if( nDataSize < 4 ) 
     1109            return 0; 
     1110 
    11021111        memcpy( &nCount, pabyData, 4 ); 
    11031112        HFAStandard( 4, &nCount ); 
     
    11191128    char        szLongFieldName[256]; 
    11201129 
    1121     nEntries = GetInstCount( pabyData ); 
     1130    nEntries = GetInstCount( pabyData, nDataSize ); 
    11221131 
    11231132/* -------------------------------------------------------------------- */ 
  • trunk/gdal/frmts/hfa/hfatype.cpp

    r11774 r12324  
    324324/*      Extract this field value, and return.                           */ 
    325325/* -------------------------------------------------------------------- */ 
    326     return( papoFields[iField]->GetInstCount( pabyData + nByteOffset ) ); 
     326    return( papoFields[iField]->GetInstCount( pabyData + nByteOffset, 
     327                                              nDataSize - nByteOffset ) ); 
    327328} 
    328329