mirror of
https://github.com/opencv/opencv.git
synced 2025-06-24 21:10:56 +08:00
Fix behavior change when PNG buffer is incomplete.
This commit is contained in:
parent
e34eff9ab2
commit
cb959b3915
@ -260,7 +260,8 @@ bool PngDecoder::readHeader()
|
|||||||
|
|
||||||
if (id != id_IHDR)
|
if (id != id_IHDR)
|
||||||
{
|
{
|
||||||
read_from_io(&sig, 8, 1);
|
if (read_from_io(&sig, 8, 1) != 1)
|
||||||
|
return false;
|
||||||
id = read_chunk(m_chunkIHDR);
|
id = read_chunk(m_chunkIHDR);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -274,7 +275,7 @@ bool PngDecoder::readHeader()
|
|||||||
m_is_fcTL_loaded = false;
|
m_is_fcTL_loaded = false;
|
||||||
id = read_chunk(chunk);
|
id = read_chunk(chunk);
|
||||||
|
|
||||||
if ((m_f && feof(m_f)) || (!m_buf.empty() && m_buf_pos > m_buf.total()))
|
if (!id || (m_f && feof(m_f)) || (!m_buf.empty() && m_buf_pos > m_buf.total()))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -679,8 +680,10 @@ size_t PngDecoder::read_from_io(void* _Buffer, size_t _ElementSize, size_t _Elem
|
|||||||
if (m_f)
|
if (m_f)
|
||||||
return fread(_Buffer, _ElementSize, _ElementCount, m_f);
|
return fread(_Buffer, _ElementSize, _ElementCount, m_f);
|
||||||
|
|
||||||
if (m_buf_pos + _ElementSize > m_buf.cols * m_buf.rows * m_buf.elemSize())
|
if (m_buf_pos + _ElementSize > m_buf.cols * m_buf.rows * m_buf.elemSize()) {
|
||||||
CV_Error(Error::StsInternal, "PNG input buffer is incomplete");
|
CV_LOG_WARNING(NULL, "PNG input buffer is incomplete");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
memcpy( _Buffer, m_buf.ptr() + m_buf_pos, _ElementSize );
|
memcpy( _Buffer, m_buf.ptr() + m_buf_pos, _ElementSize );
|
||||||
m_buf_pos += _ElementSize;
|
m_buf_pos += _ElementSize;
|
||||||
|
Loading…
Reference in New Issue
Block a user