Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:42.3:Update
opencv
opencv-imgcodecs-replace-assert-add-overflow-ch...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File opencv-imgcodecs-replace-assert-add-overflow-checks.patch of Package opencv
diff --git a/modules/imgcodecs/src/bitstrm.cpp b/modules/imgcodecs/src/bitstrm.cpp index 81829c4..ad6f947 100644 --- a/modules/imgcodecs/src/bitstrm.cpp +++ b/modules/imgcodecs/src/bitstrm.cpp @@ -42,6 +42,7 @@ #include "precomp.hpp" #include "bitstrm.hpp" +#include "utils.hpp" namespace cv { @@ -164,7 +165,7 @@ void RBaseStream::release() void RBaseStream::setPos( int pos ) { - assert( isOpened() && pos >= 0 ); + CV_Assert(isOpened() && pos >= 0); if( !m_file ) { @@ -181,14 +182,19 @@ void RBaseStream::setPos( int pos ) int RBaseStream::getPos() { - assert( isOpened() ); - return m_block_pos + (int)(m_current - m_start); + CV_Assert(isOpened()); + int pos = validateToInt((m_current - m_start) + m_block_pos); + CV_Assert(pos >= m_block_pos); // overflow check + CV_Assert(pos >= 0); // overflow check + return pos; } void RBaseStream::skip( int bytes ) { - assert( bytes >= 0 ); + CV_Assert(bytes >= 0); + uchar* old = m_current; m_current += bytes; + CV_Assert(m_current >= old); // overflow check } ///////////////////////// RLByteStream //////////////////////////// @@ -220,7 +226,7 @@ int RLByteStream::getBytes( void* buffer, int count ) { uchar* data = (uchar*)buffer; int readed = 0; - assert( count >= 0 ); + CV_Assert(count >= 0); while( count > 0 ) { @@ -371,7 +377,7 @@ void WBaseStream::writeBlock() { int size = (int)(m_current - m_start); - assert( isOpened() ); + CV_Assert(isOpened()); if( size == 0 ) return; @@ -442,7 +448,7 @@ void WBaseStream::release() int WBaseStream::getPos() { - assert( isOpened() ); + CV_Assert(isOpened()); return m_block_pos + (int)(m_current - m_start); } @@ -465,7 +471,7 @@ void WLByteStream::putBytes( const void* buffer, int count ) { uchar* data = (uchar*)buffer; - assert( data && m_current && count >= 0 ); + CV_Assert(data && m_current && count >= 0); while( count ) { diff --git a/modules/imgcodecs/src/grfmt_bmp.cpp b/modules/imgcodecs/src/grfmt_bmp.cpp index e53ae13..0d6156e 100644 --- a/modules/imgcodecs/src/grfmt_bmp.cpp +++ b/modules/imgcodecs/src/grfmt_bmp.cpp @@ -92,6 +92,7 @@ bool BmpDecoder::readHeader() m_offset = m_strm.getDWord(); int size = m_strm.getDWord(); + CV_Assert(size > 0); // overflow, 2Gb limit if( size >= 36 ) { diff --git a/modules/imgcodecs/src/grfmt_sunras.cpp b/modules/imgcodecs/src/grfmt_sunras.cpp index 97e1812..97e51fd 100644 --- a/modules/imgcodecs/src/grfmt_sunras.cpp +++ b/modules/imgcodecs/src/grfmt_sunras.cpp @@ -120,7 +120,7 @@ bool SunRasterDecoder::readHeader() m_type = IsColorPalette( m_palette, m_bpp ) ? CV_8UC3 : CV_8UC1; m_offset = m_strm.getPos(); - assert( m_offset == 32 + m_maplength ); + CV_Assert(m_offset == 32 + m_maplength); result = true; } } @@ -133,7 +133,7 @@ bool SunRasterDecoder::readHeader() m_offset = m_strm.getPos(); - assert( m_offset == 32 + m_maplength ); + CV_Assert(m_offset == 32 + m_maplength); result = true; } } @@ -226,7 +226,7 @@ bool SunRasterDecoder::readData( Mat& img ) code = m_strm.getByte(); if( len > line_end - tsrc ) { - assert(0); + CV_Error(Error::StsInternal, ""); goto bad_decoding_1bpp; } @@ -367,7 +367,7 @@ bad_decoding_end: result = true; break; default: - assert(0); + CV_Error(Error::StsInternal, ""); } } catch( ... ) diff --git a/modules/imgcodecs/src/utils.cpp b/modules/imgcodecs/src/utils.cpp index f7c38d6..9c48336 100644 --- a/modules/imgcodecs/src/utils.cpp +++ b/modules/imgcodecs/src/utils.cpp @@ -668,7 +668,7 @@ cvConvertImage( const CvArr* srcarr, CvArr* dstarr, int flags ) icvCvt_BGR2Gray_8u_C3C1R( s, s_step, d, d_step, size, swap_rb ); break; case 33: - assert( swap_rb ); + CV_Assert(swap_rb); icvCvt_RGB2BGR_8u_C3R( s, s_step, d, d_step, size ); break; case 41:
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor