Kaydet (Commit) 76201c60 authored tarafından Caolán McNamara's avatar Caolán McNamara

ofz: oom in reading hwp data

Change-Id: I1e4dc5f474b229d4d68d3fc34bc23c88767e5e50
üst 4730b23b
......@@ -356,8 +356,22 @@ void HWPFile::TagsRead()
return;
}
_hwpInfo.back_info.data.resize(_hwpInfo.back_info.size);
ReadBlock(_hwpInfo.back_info.data.data(), _hwpInfo.back_info.size);
//read potentially compressed data in blocks as its more
//likely large values are simply broken and we'll run out
//of data before we need to realloc
for (int i = 0; i < _hwpInfo.back_info.size; i+= SAL_MAX_UINT16)
{
int nOldSize = _hwpInfo.back_info.data.size();
size_t nBlock = std::min<int>(SAL_MAX_UINT16, _hwpInfo.back_info.size - nOldSize);
_hwpInfo.back_info.data.resize(nOldSize + nBlock);
size_t nReadBlock = ReadBlock(_hwpInfo.back_info.data.data() + nOldSize, nBlock);
if (nBlock != nReadBlock)
{
_hwpInfo.back_info.data.resize(nOldSize + nReadBlock);
break;
}
}
_hwpInfo.back_info.size = _hwpInfo.back_info.data.size();
if( _hwpInfo.back_info.size > 0 )
_hwpInfo.back_info.type = 2;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment