diff --git a/src/tiffimage.cpp b/src/tiffimage.cpp index 34c5c04b..2f2b063d 100644 --- a/src/tiffimage.cpp +++ b/src/tiffimage.cpp @@ -523,15 +523,14 @@ namespace Exiv2 { : 1 ; - // if ( offset > io.size() ) offset = 0; // Denial of service? + // if ( offset > io.size() ) offset = 0; // Denial of service? DataBuf buf(MIN(size*kount + pad,48)); // allocate a buffer - if ( (isStringType(type) && count*size > 4) || count*size > 4 ) { // read into buffer + std::memcpy(buf.pData_,dir.pData_+8,4); // copy dir[8:11] into buffer (short strings) + if ( count*size > 4 ) { // read into buffer size_t restore = io.tell(); // save io.seek(offset,BasicIo::beg); // position io.read(buf.pData_,kount*size);// read io.seek(restore,BasicIo::beg); // restore - } else { // move data from directory into buffer - std::memcpy(buf.pData_,dir.pData_+8,4); } uint32_t Offset = isLongType(type) ? byteSwap4(buf,0,bSwap) : 0 ;