Changeset 12324
- Timestamp:
- 10/04/07 15:47:32 (1 year ago)
- Files:
-
- trunk/gdal/frmts/hfa/hfa_p.h (modified) (1 diff)
- trunk/gdal/frmts/hfa/hfafield.cpp (modified) (6 diffs)
- trunk/gdal/frmts/hfa/hfatype.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/gdal/frmts/hfa/hfa_p.h
r11303 r12324 307 307 308 308 int GetInstBytes( GByte *, int ); 309 int GetInstCount( GByte * pabyData );309 int GetInstCount( GByte * pabyData, int nDataSize ); 310 310 }; 311 311 trunk/gdal/frmts/hfa/hfafield.cpp
r12301 r12324 699 699 int nIntRet = 0; 700 700 double dfDoubleRet = 0.0; 701 int nInstItemCount = GetInstCount( pabyData );701 int nInstItemCount = GetInstCount( pabyData, nDataSize ); 702 702 GByte *pabyRawData = NULL; 703 703 … … 836 836 GInt32 nRows, nColumns; 837 837 GInt16 nBaseItemType; 838 839 if( nDataSize < 12 ) 840 return FALSE; 838 841 839 842 memcpy( &nRows, pabyData, 4 ); … … 1080 1083 /************************************************************************/ 1081 1084 1082 int HFAField::GetInstCount( GByte * pabyData )1085 int HFAField::GetInstCount( GByte * pabyData, int nDataSize ) 1083 1086 1084 1087 { … … 1089 1092 GInt32 nRows, nColumns; 1090 1093 1094 if( nDataSize < 20 ) 1095 return 0; 1096 1091 1097 memcpy( &nRows, pabyData+8, 4 ); 1092 1098 HFAStandard( 4, &nRows ); … … 1100 1106 GInt32 nCount; 1101 1107 1108 if( nDataSize < 4 ) 1109 return 0; 1110 1102 1111 memcpy( &nCount, pabyData, 4 ); 1103 1112 HFAStandard( 4, &nCount ); … … 1119 1128 char szLongFieldName[256]; 1120 1129 1121 nEntries = GetInstCount( pabyData );1130 nEntries = GetInstCount( pabyData, nDataSize ); 1122 1131 1123 1132 /* -------------------------------------------------------------------- */ trunk/gdal/frmts/hfa/hfatype.cpp
r11774 r12324 324 324 /* Extract this field value, and return. */ 325 325 /* -------------------------------------------------------------------- */ 326 return( papoFields[iField]->GetInstCount( pabyData + nByteOffset ) ); 326 return( papoFields[iField]->GetInstCount( pabyData + nByteOffset, 327 nDataSize - nByteOffset ) ); 327 328 } 328 329
