Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit4b4d741

Browse files
author
Clement Champetier
committed
Common: fix out-of-bounds access in setters functions of ParamSet
* Avoid const_cast.* Same way in all AvTranscoder to get the FFmpeg errors by using anarray fo char passed to av_strerror function.* Warnings from Coverity Scan.
1 parent50843b9 commit4b4d741

File tree

1 file changed

+14
-21
lines changed

1 file changed

+14
-21
lines changed

‎src/AvTranscoder/common.cpp

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,8 @@ void ParamSet::set( const std::string& key, const std::string& flag, const bool
3333
error =av_opt_get_int( _objContext, key.c_str(), AV_OPT_SEARCH_CHILDREN, &optVal );
3434
if( error !=0 )
3535
{
36-
std::stringerr("", AV_ERROR_MAX_STRING_SIZE );
37-
//av_make_error_string( const_cast<char*>(err.c_str()), err.size(), error );
38-
av_strerror( error,const_cast<char*>(err.c_str()), err.size() );
36+
char err[250];
37+
av_strerror( error, err,250 );
3938
throwstd::runtime_error("unknown key" + key +":" + err );
4039
}
4140

@@ -47,9 +46,8 @@ void ParamSet::set( const std::string& key, const std::string& flag, const bool
4746
error =av_opt_set_int( _objContext, key.c_str(), optVal, AV_OPT_SEARCH_CHILDREN );
4847
if( error !=0 )
4948
{
50-
std::stringerr("", AV_ERROR_MAX_STRING_SIZE );
51-
//av_make_error_string( const_cast<char*>(err.c_str()), err.size(), error );
52-
av_strerror( error,const_cast<char*>(err.c_str()), err.size() );
49+
char err[250];
50+
av_strerror( error, err,250 );
5351
throwstd::runtime_error("setting" + key +" parameter to" + flag +":" + err );
5452
}
5553
}
@@ -59,9 +57,8 @@ void ParamSet::set( const std::string& key, const bool value )
5957
int error =av_opt_set_int( _objContext, key.c_str(), value, AV_OPT_SEARCH_CHILDREN );
6058
if( error !=0 )
6159
{
62-
std::stringerr("", AV_ERROR_MAX_STRING_SIZE );
63-
//av_make_error_string( const_cast<char*>(err.c_str()), err.size(), error );
64-
av_strerror( error,const_cast<char*>(err.c_str()), err.size() );
60+
char err[250];
61+
av_strerror( error, err,250 );
6562
throwstd::runtime_error("setting" + key +" parameter to" + ( value ?"true" :"false" ) +":" + err );
6663
}
6764
}
@@ -75,9 +72,8 @@ void ParamSet::set( const std::string& key, const int value )
7572
{
7673
std::ostringstream os;
7774
os << value;
78-
std::stringerr("", AV_ERROR_MAX_STRING_SIZE );
79-
//av_make_error_string( const_cast<char*>(err.c_str()), err.size(), error );
80-
av_strerror( error,const_cast<char*>(err.c_str()), err.size() );
75+
char err[250];
76+
av_strerror( error, err,250 );
8177
throwstd::runtime_error("setting" + key +" parameter to" + os.str() +":" + err );
8278
}
8379
}
@@ -92,9 +88,8 @@ void ParamSet::set( const std::string& key, const int num, const int den )
9288
{
9389
std::ostringstream os;
9490
os << num <<"/" << den;
95-
std::stringerr("", AV_ERROR_MAX_STRING_SIZE );
96-
//av_make_error_string( const_cast<char*>(err.c_str()), err.size(), error );
97-
av_strerror( error,const_cast<char*>(err.c_str()), err.size() );
91+
char err[250];
92+
av_strerror( error, err,250 );
9893
throwstd::runtime_error("setting" + key +" parameter to" + os.str() +":" + err );
9994
}
10095
}
@@ -106,9 +101,8 @@ void ParamSet::set( const std::string& key, const double value )
106101
{
107102
std::ostringstream os;
108103
os << value;
109-
std::stringerr("", AV_ERROR_MAX_STRING_SIZE );
110-
//av_make_error_string( const_cast<char*>(err.c_str()), err.size(), error );
111-
av_strerror( error,const_cast<char*>(err.c_str()), err.size() );
104+
char err[250];
105+
av_strerror( error, err,250 );
112106
throwstd::runtime_error("setting" + key +" parameter to" + os.str() +":" + err );
113107
}
114108
}
@@ -118,9 +112,8 @@ void ParamSet::set( const std::string& key, const std::string& value )
118112
int error =av_opt_set( _objContext, key.c_str(), value.c_str(), AV_OPT_SEARCH_CHILDREN );
119113
if( error !=0 )
120114
{
121-
std::stringerr("", AV_ERROR_MAX_STRING_SIZE );
122-
//av_make_error_string( const_cast<char*>(err.c_str()), err.size(), error );
123-
av_strerror( error,const_cast<char*>(err.c_str()), err.size() );
115+
char err[250];
116+
av_strerror( error, err,250 );
124117
throwstd::runtime_error("setting" + key +" parameter to" + value +":" + err );
125118
}
126119
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp