#1277 Fix submitted. Thank You to Ben for reporting this and providing a patch.

v0.27.3
Robin Mills 8 years ago
parent bc1f8f7e84
commit dd4faaf831

@ -330,6 +330,11 @@ namespace Exiv2 {
return result;
}
static bool typeValid(uint16_t type)
{
return type >= 1 && type <= 13 ;
}
void Image::printIFDStructure(BasicIo& io, std::ostream& out, Exiv2::PrintStructureOption option,uint32_t start,bool bSwap,char c,int depth)
{
depth++;
@ -386,6 +391,12 @@ namespace Exiv2 {
: 1
;
// Break for unknown tag types else we may get segfault.
if ( !typeValid(type) ) {
std::cerr << "invalid type value detected in Image::printIFDStructure: " << type << std::endl;
break;
}
// if ( offset > io.size() ) offset = 0; // Denial of service?
DataBuf buf(size*count + pad); // allocate a buffer
std::memcpy(buf.pData_,dir.pData_+8,4); // copy dir[8:11] into buffer (short strings)

Loading…
Cancel
Save