From 50843b92cb58160d9566d583136f2fade1505bff Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Wed, 20 Aug 2014 10:44:21 +0200 Subject: [PATCH 1/3] Common: fix variable used after null check Warning from Coverity Scan. --- src/AvTranscoder/common.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/AvTranscoder/common.cpp b/src/AvTranscoder/common.cpp index add2780b..cbdad3b8 100644 --- a/src/AvTranscoder/common.cpp +++ b/src/AvTranscoder/common.cpp @@ -27,7 +27,6 @@ void ParamSet::set( const std::string& key, const std::string& flag, const bool if( ! flagOpt ) { - std::cout << flag << std::endl << " : " << flagOpt->default_val.i64 << std::endl; throw std::runtime_error( "unknown flag " + flag ); } From c838aea3aa0b98bc69a1bd8c2c85b5aeb543dbbf Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Wed, 20 Aug 2014 10:47:22 +0200 Subject: [PATCH 2/3] 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 an array fo char passed to av_strerror function. * Warnings from Coverity Scan. --- src/AvTranscoder/common.cpp | 35 ++++++++++++++--------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/src/AvTranscoder/common.cpp b/src/AvTranscoder/common.cpp index cbdad3b8..22e2b157 100644 --- a/src/AvTranscoder/common.cpp +++ b/src/AvTranscoder/common.cpp @@ -33,9 +33,8 @@ void ParamSet::set( const std::string& key, const std::string& flag, const bool error = av_opt_get_int( _objContext, key.c_str(), AV_OPT_SEARCH_CHILDREN, &optVal ); if( error != 0 ) { - std::string err( "", AV_ERROR_MAX_STRING_SIZE ); - //av_make_error_string( const_cast(err.c_str()), err.size(), error ); - av_strerror( error, const_cast(err.c_str()), err.size() ); + char err[AV_ERROR_MAX_STRING_SIZE]; + av_strerror( error, err, AV_ERROR_MAX_STRING_SIZE ); throw std::runtime_error( "unknown key " + key + ": " + err ); } @@ -47,9 +46,8 @@ void ParamSet::set( const std::string& key, const std::string& flag, const bool error = av_opt_set_int( _objContext, key.c_str(), optVal, AV_OPT_SEARCH_CHILDREN ); if( error != 0 ) { - std::string err( "", AV_ERROR_MAX_STRING_SIZE ); - //av_make_error_string( const_cast(err.c_str()), err.size(), error ); - av_strerror( error, const_cast(err.c_str()), err.size() ); + char err[AV_ERROR_MAX_STRING_SIZE]; + av_strerror( error, err, AV_ERROR_MAX_STRING_SIZE ); throw std::runtime_error( "setting " + key + " parameter to " + flag + ": " + err ); } } @@ -59,9 +57,8 @@ void ParamSet::set( const std::string& key, const bool value ) int error = av_opt_set_int( _objContext, key.c_str(), value, AV_OPT_SEARCH_CHILDREN ); if( error != 0 ) { - std::string err( "", AV_ERROR_MAX_STRING_SIZE ); - //av_make_error_string( const_cast(err.c_str()), err.size(), error ); - av_strerror( error, const_cast(err.c_str()), err.size() ); + char err[AV_ERROR_MAX_STRING_SIZE]; + av_strerror( error, err, AV_ERROR_MAX_STRING_SIZE ); throw std::runtime_error( "setting " + key + " parameter to " + ( value ? "true" : "false" ) + ": " + err ); } } @@ -75,9 +72,8 @@ void ParamSet::set( const std::string& key, const int value ) { std::ostringstream os; os << value; - std::string err( "", AV_ERROR_MAX_STRING_SIZE ); - //av_make_error_string( const_cast(err.c_str()), err.size(), error ); - av_strerror( error, const_cast(err.c_str()), err.size() ); + char err[AV_ERROR_MAX_STRING_SIZE]; + av_strerror( error, err, AV_ERROR_MAX_STRING_SIZE ); throw std::runtime_error( "setting " + key + " parameter to " + os.str() + ": " + err ); } } @@ -92,9 +88,8 @@ void ParamSet::set( const std::string& key, const int num, const int den ) { std::ostringstream os; os << num << "/" << den; - std::string err( "", AV_ERROR_MAX_STRING_SIZE ); - //av_make_error_string( const_cast(err.c_str()), err.size(), error ); - av_strerror( error, const_cast(err.c_str()), err.size() ); + char err[AV_ERROR_MAX_STRING_SIZE]; + av_strerror( error, err, AV_ERROR_MAX_STRING_SIZE ); throw std::runtime_error( "setting " + key + " parameter to " + os.str() + ": " + err ); } } @@ -106,9 +101,8 @@ void ParamSet::set( const std::string& key, const double value ) { std::ostringstream os; os << value; - std::string err( "", AV_ERROR_MAX_STRING_SIZE ); - //av_make_error_string( const_cast(err.c_str()), err.size(), error ); - av_strerror( error, const_cast(err.c_str()), err.size() ); + char err[AV_ERROR_MAX_STRING_SIZE]; + av_strerror( error, err, AV_ERROR_MAX_STRING_SIZE ); throw std::runtime_error( "setting " + key + " parameter to " + os.str() + ": " + err ); } } @@ -118,9 +112,8 @@ void ParamSet::set( const std::string& key, const std::string& value ) int error = av_opt_set( _objContext, key.c_str(), value.c_str(), AV_OPT_SEARCH_CHILDREN ); if( error != 0 ) { - std::string err( "", AV_ERROR_MAX_STRING_SIZE ); - //av_make_error_string( const_cast(err.c_str()), err.size(), error ); - av_strerror( error, const_cast(err.c_str()), err.size() ); + char err[AV_ERROR_MAX_STRING_SIZE]; + av_strerror( error, err, AV_ERROR_MAX_STRING_SIZE ); throw std::runtime_error( "setting " + key + " parameter to " + value + ": " + err ); } } From a0aed62956f5d8108474c443e30c9e1d9f8b4fbb Mon Sep 17 00:00:00 2001 From: Clement Champetier Date: Wed, 20 Aug 2014 10:49:10 +0200 Subject: [PATCH 3/3] VideoStreamProperties: fix uninitialized variable topFieldFirst Warning from Coverity Scan. --- src/AvTranscoder/Metadatas/VideoStreamProperties.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/AvTranscoder/Metadatas/VideoStreamProperties.hpp b/src/AvTranscoder/Metadatas/VideoStreamProperties.hpp index 93fdf382..4d3b3683 100644 --- a/src/AvTranscoder/Metadatas/VideoStreamProperties.hpp +++ b/src/AvTranscoder/Metadatas/VideoStreamProperties.hpp @@ -124,6 +124,7 @@ VideoProperties videoStreamInfo( vp.maxBitRate = codec_context->rc_max_rate; vp.minBitRate = codec_context->rc_min_rate; vp.isInterlaced = false; + vp.topFieldFirst = false; vp.ticksPerFrame = codec_context->ticks_per_frame, vp.width = codec_context->width,