diff --git a/src/objects/valkyrie_object.cpp b/src/objects/valkyrie_object.cpp index 6a343a8..b212478 100644 --- a/src/objects/valkyrie_object.cpp +++ b/src/objects/valkyrie_object.cpp @@ -525,7 +525,8 @@ int Valkyrie::checkOptArg( int optid, QString& argval ) // check the version QString cmd_qstr = argval + " --version 2>&1"; - const char* cmd = cmd_qstr.toLatin1().constData(); + QByteArray cmd_bytes = cmd_qstr.toLatin1(); + const char* cmd = cmd_bytes.constData(); FILE* fp = popen( cmd, "r" ); if ( !fp ) { return PERROR_BADFILE; diff --git a/src/options/vk_parse_cmdline.cpp b/src/options/vk_parse_cmdline.cpp index 7b086b2..e7c50e8 100644 --- a/src/options/vk_parse_cmdline.cpp +++ b/src/options/vk_parse_cmdline.cpp @@ -205,7 +205,8 @@ bool parseCmdArgs( int argc, char** argv, Valkyrie* vk, while ( true ) { const vkPoptOption* opt = NULL; bool done_vk_flags = false; - rc = vkPoptGetNextOpt( optCon, argVal, &opt, done_vk_flags ); + rc = vkPoptGetNextOpt( optCon, argVal, sizeof( argVal ), + &opt, done_vk_flags ); if ( rc != PARSED_OK ) { // an error occurred during option processing diff --git a/src/options/vk_popt.cpp b/src/options/vk_popt.cpp index cc07fcc..6c681e0 100644 --- a/src/options/vk_popt.cpp +++ b/src/options/vk_popt.cpp @@ -174,7 +174,7 @@ static const char* vkExpandNextArg( const char* s ) returns 0 on success, PERROR_* on error */ int vkPoptGetNextOpt( vkPoptContext con, - char* arg_val/*OUT*/, + char* arg_val/*OUT*/, size_t arg_val_size, const vkPoptOption** opt_ret/*OUT*/, bool& done_vk_flags/*OUT*/ ) { @@ -359,8 +359,8 @@ int vkPoptGetNextOpt( vkPoptContext con, longArg = NULL; // store the argument value for checking - if ( con->os->nextArg ) { - sprintf( arg_val, "%s", con->os->nextArg ); + if ( con->os->nextArg && arg_val != NULL && arg_val_size > 0 ) { + snprintf( arg_val, arg_val_size, "%s", con->os->nextArg ); } } // end of "if ! VkOPT::ARG_NONE" diff --git a/src/options/vk_popt.h b/src/options/vk_popt.h index c9dee63..e3ebd98 100644 --- a/src/options/vk_popt.h +++ b/src/options/vk_popt.h @@ -62,7 +62,7 @@ extern "C" { /* get next option opt_ret returns 0 on success, PERROR_* on error */ - int vkPoptGetNextOpt( vkPoptContext con, char* arg_val, + int vkPoptGetNextOpt( vkPoptContext con, char* arg_val, size_t arg_val_size, const vkPoptOption** opt/*OUT*/, bool& done_vk_flags/*OUT*/ ); diff --git a/src/toolview/vglogview.cpp b/src/toolview/vglogview.cpp index 7dcc529..ef6e676 100644 --- a/src/toolview/vglogview.cpp +++ b/src/toolview/vglogview.cpp @@ -674,8 +674,8 @@ void ErrorItem::showFullSrcPath( bool show ) StackItem* stack = (StackItem*)child( i ); if ( stack->elemType() == VG_ELEM::STACK ) { // multiple frames - for ( int i=0; ichildCount(); ++i ) { - VgOutputItem* item = (VgOutputItem*)stack->child( i ); + for ( int j=0; jchildCount(); ++j ) { + VgOutputItem* item = (VgOutputItem*)stack->child( j ); if ( item->elemType() == VG_ELEM::FRAME ) { QString text = ((FrameItem*)item)->describe_IP( show ); item->setText( text ); @@ -1213,8 +1213,8 @@ void VgLogView::updateErrorItems( QDomElement ec ) // search errorcount pairs for err_unique QDomNodeList pairs = ec.childNodes(); - for ( int i = 0; i < pairs.count(); i++ ) { - QDomNode pair = pairs.item( i ); + for ( int j = 0; j < pairs.count(); j++ ) { + QDomNode pair = pairs.item( j ); QDomNodeList pair_details = pair.childNodes(); QString unique = pair_details.item( 1 ).toElement().text(); diff --git a/src/utils/vk_utils.cpp b/src/utils/vk_utils.cpp index 7ed5d9c..6c890b9 100644 --- a/src/utils/vk_utils.cpp +++ b/src/utils/vk_utils.cpp @@ -140,11 +140,12 @@ QString vk_mkstemp( QString filepath, QString ext/*=QString()*/ ) /* something went wrong */ VK_DEBUG( "failed to create unique filename from '%s'.", qPrintable( filepath ) ); + vk_str_free( tmpname ); return QString(); } unique = QString( tmpname ); - tmpname = vk_str_free( tmpname ); + vk_str_free( tmpname ); } return unique; @@ -670,4 +671,3 @@ QString vkDirCfgDialog( QWidget* parent, } #endif -