@@ -102,10 +102,14 @@ void CheckFunctionsImpl::functionCalledError(const Token* tok, Severity severity
102102 reportError (tok, severity, prefix + " Called" , msg, CWE477 , Certainty::normal);
103103}
104104
105- static bool hasMinSize (const Token* ftok, int argnr, const Settings& settings)
105+ static bool hasArgMinSize (const Token* ftok, int argnr, const Settings& settings)
106106{
107- const std::vector<Library::ArgumentChecks::MinSize>* minsizes = settings.library .argminsizes (ftok, argnr);
108- return minsizes && !minsizes->empty ();
107+ if (const std::vector<Library::ArgumentChecks::MinSize>* minsizes = settings.library .argminsizes (ftok, argnr)) {
108+ return std::any_of (minsizes->begin (), minsizes->end (), [](const Library::ArgumentChecks::MinSize& ms) {
109+ return ms.type == Library::ArgumentChecks::MinSize::Type::ARGVALUE ;
110+ });
111+ }
112+ return false ;
109113}
110114
111115// ---------------------------------------------------------------------------
@@ -143,7 +147,7 @@ void CheckFunctionsImpl::invalidFunctionUsage()
143147 invalidFunctionArgError (argtok, functionToken->str (), argnr, nullptr , mSettings .library .validarg (functionToken, argnr));
144148 }
145149 // check <strz>
146- if (mSettings .library .isargstrz (functionToken, argnr) && !hasMinSize (functionToken, argnr, mSettings )) {
150+ if (mSettings .library .isargstrz (functionToken, argnr) && !hasArgMinSize (functionToken, argnr, mSettings )) {
147151 if (Token::Match (argtok, " & %var% !![" ) && argtok->next () && argtok->next ()->valueType ()) {
148152 const ValueType * valueType = argtok->next ()->valueType ();
149153 const Variable * variable = argtok->next ()->variable ();
0 commit comments