mirror of
https://github.com/opencv/opencv.git
synced 2025-06-16 23:00:51 +08:00
Merge pull request #10563 from alalek:issue_10540
This commit is contained in:
commit
7763b58a60
@ -42,6 +42,7 @@
|
|||||||
|
|
||||||
#include "precomp.hpp"
|
#include "precomp.hpp"
|
||||||
#include "bitstrm.hpp"
|
#include "bitstrm.hpp"
|
||||||
|
#include "utils.hpp"
|
||||||
|
|
||||||
namespace cv
|
namespace cv
|
||||||
{
|
{
|
||||||
@ -165,7 +166,7 @@ void RBaseStream::release()
|
|||||||
|
|
||||||
void RBaseStream::setPos( int pos )
|
void RBaseStream::setPos( int pos )
|
||||||
{
|
{
|
||||||
assert( isOpened() && pos >= 0 );
|
CV_Assert(isOpened() && pos >= 0);
|
||||||
|
|
||||||
if( !m_file )
|
if( !m_file )
|
||||||
{
|
{
|
||||||
@ -182,14 +183,19 @@ void RBaseStream::setPos( int pos )
|
|||||||
|
|
||||||
int RBaseStream::getPos()
|
int RBaseStream::getPos()
|
||||||
{
|
{
|
||||||
assert( isOpened() );
|
CV_Assert(isOpened());
|
||||||
return m_block_pos + (int)(m_current - m_start);
|
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 )
|
void RBaseStream::skip( int bytes )
|
||||||
{
|
{
|
||||||
assert( bytes >= 0 );
|
CV_Assert(bytes >= 0);
|
||||||
|
uchar* old = m_current;
|
||||||
m_current += bytes;
|
m_current += bytes;
|
||||||
|
CV_Assert(m_current >= old); // overflow check
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////// RLByteStream ////////////////////////////
|
///////////////////////// RLByteStream ////////////////////////////
|
||||||
@ -221,7 +227,7 @@ int RLByteStream::getBytes( void* buffer, int count )
|
|||||||
{
|
{
|
||||||
uchar* data = (uchar*)buffer;
|
uchar* data = (uchar*)buffer;
|
||||||
int readed = 0;
|
int readed = 0;
|
||||||
assert( count >= 0 );
|
CV_Assert(count >= 0);
|
||||||
|
|
||||||
while( count > 0 )
|
while( count > 0 )
|
||||||
{
|
{
|
||||||
@ -373,7 +379,7 @@ void WBaseStream::writeBlock()
|
|||||||
{
|
{
|
||||||
int size = (int)(m_current - m_start);
|
int size = (int)(m_current - m_start);
|
||||||
|
|
||||||
assert( isOpened() );
|
CV_Assert(isOpened());
|
||||||
if( size == 0 )
|
if( size == 0 )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -444,7 +450,7 @@ void WBaseStream::release()
|
|||||||
|
|
||||||
int WBaseStream::getPos()
|
int WBaseStream::getPos()
|
||||||
{
|
{
|
||||||
assert( isOpened() );
|
CV_Assert(isOpened());
|
||||||
return m_block_pos + (int)(m_current - m_start);
|
return m_block_pos + (int)(m_current - m_start);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -467,7 +473,7 @@ void WLByteStream::putBytes( const void* buffer, int count )
|
|||||||
{
|
{
|
||||||
uchar* data = (uchar*)buffer;
|
uchar* data = (uchar*)buffer;
|
||||||
|
|
||||||
assert( data && m_current && count >= 0 );
|
CV_Assert(data && m_current && count >= 0);
|
||||||
|
|
||||||
while( count )
|
while( count )
|
||||||
{
|
{
|
||||||
|
@ -95,6 +95,7 @@ bool BmpDecoder::readHeader()
|
|||||||
m_offset = m_strm.getDWord();
|
m_offset = m_strm.getDWord();
|
||||||
|
|
||||||
int size = m_strm.getDWord();
|
int size = m_strm.getDWord();
|
||||||
|
CV_Assert(size > 0); // overflow, 2Gb limit
|
||||||
|
|
||||||
if( size >= 36 )
|
if( size >= 36 )
|
||||||
{
|
{
|
||||||
|
@ -53,6 +53,8 @@
|
|||||||
#include "utils.hpp"
|
#include "utils.hpp"
|
||||||
#include "grfmt_pam.hpp"
|
#include "grfmt_pam.hpp"
|
||||||
|
|
||||||
|
using namespace cv;
|
||||||
|
|
||||||
/* the PAM related fields */
|
/* the PAM related fields */
|
||||||
#define MAX_PAM_HEADER_IDENITFIER_LENGTH 8
|
#define MAX_PAM_HEADER_IDENITFIER_LENGTH 8
|
||||||
#define MAX_PAM_HEADER_VALUE_LENGTH 255
|
#define MAX_PAM_HEADER_VALUE_LENGTH 255
|
||||||
@ -184,7 +186,7 @@ basic_conversion (void *src, const struct channel_layout *layout, int src_sampe_
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
assert (0);
|
CV_Error(Error::StsInternal, "");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -205,12 +207,12 @@ basic_conversion (void *src, const struct channel_layout *layout, int src_sampe_
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
assert (0);
|
CV_Error(Error::StsInternal, "");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
assert (0);
|
CV_Error(Error::StsInternal, "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -711,7 +713,7 @@ bool PAMEncoder::write( const Mat& img, const std::vector<int>& params )
|
|||||||
} else
|
} else
|
||||||
strm.putBytes( data, stride*height );
|
strm.putBytes( data, stride*height );
|
||||||
} else
|
} else
|
||||||
assert (0);
|
CV_Error(Error::StsInternal, "");
|
||||||
|
|
||||||
strm.close();
|
strm.close();
|
||||||
return true;
|
return true;
|
||||||
|
@ -124,7 +124,7 @@ bool SunRasterDecoder::readHeader()
|
|||||||
m_type = IsColorPalette( m_palette, m_bpp ) ? CV_8UC3 : CV_8UC1;
|
m_type = IsColorPalette( m_palette, m_bpp ) ? CV_8UC3 : CV_8UC1;
|
||||||
m_offset = m_strm.getPos();
|
m_offset = m_strm.getPos();
|
||||||
|
|
||||||
assert( m_offset == 32 + m_maplength );
|
CV_Assert(m_offset == 32 + m_maplength);
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -137,7 +137,7 @@ bool SunRasterDecoder::readHeader()
|
|||||||
|
|
||||||
m_offset = m_strm.getPos();
|
m_offset = m_strm.getPos();
|
||||||
|
|
||||||
assert( m_offset == 32 + m_maplength );
|
CV_Assert(m_offset == 32 + m_maplength);
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -230,7 +230,7 @@ bool SunRasterDecoder::readData( Mat& img )
|
|||||||
code = m_strm.getByte();
|
code = m_strm.getByte();
|
||||||
if( len > line_end - tsrc )
|
if( len > line_end - tsrc )
|
||||||
{
|
{
|
||||||
assert(0);
|
CV_Error(Error::StsInternal, "");
|
||||||
goto bad_decoding_1bpp;
|
goto bad_decoding_1bpp;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -371,7 +371,7 @@ bad_decoding_end:
|
|||||||
result = true;
|
result = true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
assert(0);
|
CV_Error(Error::StsInternal, "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CV_CATCH_ALL
|
CV_CATCH_ALL
|
||||||
|
@ -56,7 +56,6 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <assert.h>
|
|
||||||
|
|
||||||
#if defined _WIN32 || defined WINCE
|
#if defined _WIN32 || defined WINCE
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
@ -670,7 +670,7 @@ cvConvertImage( const CvArr* srcarr, CvArr* dstarr, int flags )
|
|||||||
icvCvt_BGR2Gray_8u_C3C1R( s, s_step, d, d_step, size, swap_rb );
|
icvCvt_BGR2Gray_8u_C3C1R( s, s_step, d, d_step, size, swap_rb );
|
||||||
break;
|
break;
|
||||||
case 33:
|
case 33:
|
||||||
assert( swap_rb );
|
CV_Assert(swap_rb);
|
||||||
icvCvt_RGB2BGR_8u_C3R( s, s_step, d, d_step, size );
|
icvCvt_RGB2BGR_8u_C3R( s, s_step, d, d_step, size );
|
||||||
break;
|
break;
|
||||||
case 41:
|
case 41:
|
||||||
|
Loading…
Reference in New Issue
Block a user