ããŒã¿å§çž®ã®åé¡ã解決ã§ããããã°ã©ã ã®1ã€ã¯ã人æ°ã®ãããã¡ã€ã«ã¢ãŒã«ã€ã7-Zipã§ããç§ã¯ããèªåã§äœ¿çšããŠããŸãã èªè
ã¯é·ãéããã®ã¢ããªã±ãŒã·ã§ã³ã®ã³ãŒãããã§ãã¯ããããã«æ±ããŠããŸããã ããã§ã¯ããœãŒã¹ã³ãŒãã調ã¹ãŠãèå³æ·±ãPVS-Studioã§äœãèŠã€ããããèŠãŠã¿ãŸãããã

ã¯ããã«
ãããžã§ã¯ãã«é¢ããããã€ãã®èšèã 7-Zip-Cããã³C ++ã§èšè¿°ããããé«åºŠãªããŒã¿å§çž®ãåããç¡æã®ãã¡ã€ã«ã¢ãŒã«ã€ãã 235åè¡ã®å°ããªã³ãŒããµã€ãºã§ãã éåžžã«å¹ççãªLZMAå§çž®ã¢ã«ãŽãªãºã ãåããç¬èªã®7z圢åŒãå«ããããã€ãã®å§çž®ã¢ã«ãŽãªãºã ãšå€ãã®ããŒã¿åœ¢åŒããµããŒãããŠããŸãã ãã®ããã°ã©ã ã¯1999幎ããéçºãããŠãããç¡æã§ãªãŒãã³ãœãŒã¹ã³ãŒããå«ãŸããŠããŸãã 7-Zipã¯ã2007幎SourceForge.net Community Choice Awardsã®Best Designããã³Best Technical Designã«ããŽãªã§åè³ããŠããŸãã æ€èšŒã®ããã«ãããŒãžã§ã³16.00ãéžæããããã®ãœãŒã¹ã³ãŒãã¯
http://www.7-zip.org/download.htmlããããŠã³ããŒããããŸãã
ãæ€èšŒçµæ
7-Zipã³ãŒãã確èªããããã«ã
PVS-Studio v6.04éçã³ãŒãã¢ãã©ã€ã¶ãŒã䜿çšããŸããã ãã®èšäºã§ã¯ãæãèå³æ·±ãã¢ãã©ã€ã¶ãŒã¡ãã»ãŒãžãéžæãããåæãããŸããã ããããèŠãŠã¿ãŸãããã
æ¡ä»¶æã®ã¿ã€ããã¹
æ¡ä»¶ã¹ããŒãã¡ã³ãã®ã¿ã€ããã¹ã¯ãããã°ã©ã ã§ã¯äžè¬çã§ãã å€æ°ã®ãã§ãã¯ã®å Žåããããã®æ€åºã¯å€ãã®ãã©ãã«ã«ãªãå¯èœæ§ããããŸãã ãã®ãããªå Žåãéçã³ãŒãã¢ãã©ã€ã¶ãŒã圹ç«ã¡ãŸãã
ãã®ãšã©ãŒã®äŸãããã€ã瀺ããŸãã
V501 ã||ãã®å·ŠåŽãšå³åŽã«åäžã®å¯æ¬¡åŒãId == k_PPCãããããŸã æŒç®åã 7zupdate.cpp 41
void SetDelta() { if (Id == k_IA64) Delta = 16; else if (Id == k_ARM || Id == k_PPC || Id == k_PPC)
ã¢ãã©ã€ã¶ãŒã¯åãæ¡ä»¶åŒãæ€åºããŸããã æè¯ã®å Žåã
Id == k_PPCã®æ¡ä»¶ã®1ã€ã¯åé·ã§ãããããã°ã©ã ã®ããžãã¯ã«åœ±é¿ããŸããã ã¿ã€ããã¹ãä¿®æ£ããã«ã¯ããã®æ¡ä»¶ãåé€ããã ãã§ãæ£ããåŒã¯æ¬¡ã®ããã«ãªããŸãã
if (Id == k_IA64) Delta = 16; else if (Id == k_ARM || Id == k_PPC) Delta = 4;
ããããç¹°ãè¿ãæ¡ä»¶ã®1ã€ã«å®æ°
k_PPCã®ä»£ããã«å¥ã®å®æ°ãããå Žåããã®ãããªã¿ã€ããã¹ã®ããæ·±å»ãªçµæãçºçããå¯èœæ§ããããŸãã ãã®å Žåãããã°ã©ã ã®ããžãã¯ã«éåããå¯èœæ§ããããŸãã
æ¡ä»¶æã®ã¿ã€ããã¹ã®å¥ã®äŸã次ã«ç€ºããŸãã
V501ã||ãã®å·Šãšå³ã«åäžã®ãµãåŒããããŸã æŒç®åïŒoffs> = nodeSize || offs> = nodeSize hfshandler.cpp 915
HRESULT CDatabase::LoadCatalog(....) { .... UInt32 nodeSize = (1 << hr.NodeSizeLog); UInt32 offs = Get16(p + nodeOffset + nodeSize - (i + 1) * 2); UInt32 offsNext = Get16(p + nodeOffset + nodeSize - (i + 2) * 2); UInt32 recSize = offsNext - offs; if (offs >= nodeSize || offs >= nodeSize
ããã§åé¡ã¯ç¹°ãè¿ãæ¡ä»¶
offs> = nodeSizeã«ãããŸãã
æãå¯èœæ§ãé«ãã®ã¯ãã¿ã€ããã¹ãåå ã§Copy-Pasteã䜿çšããŠã³ãŒããè€è£œããããšã§ãã ã³ãŒãã®ã»ã¯ã·ã§ã³ã®ã³ããŒãæåŠããããšãä¿ãããšã¯æå³ããããŸããã ãšãã£ã¿ã§ãã®ãããªæ©èœã奪ãã®ã¯äŸ¿å©ãããŠäŸ¿å©ã§ãã çµæããã泚ææ·±ã確èªããå¿
èŠããããŸãã
åäžã®æ¯èŒ
ã¢ãã©ã€ã¶ãŒã¯ãæ¡ä»¶ã¹ããŒãã¡ã³ãã®æ§ç¯ã§æœåšçãªãšã©ãŒãæ€åºããŸããã 圌女ã®äŸã次ã«ç€ºããŸãã
V517 ãifïŒAïŒ{...} else ifïŒAïŒ{...}ããã¿ãŒã³ã®äœ¿çšãæ€åºãããŸããã è«çãšã©ãŒãååšããå¯èœæ§ããããŸãã è¡ã確èªããŠãã ããïŒ388ã390ãarchivecommandline.cpp 388
static void AddRenamePair(...., NRecursedType::EEnum type, ....) { .... if (type == NRecursedType::kRecursed) val.AddAscii("-r"); else if (type == NRecursedType::kRecursed)
ã³ãŒãã§ã¯ã
NRecursedTypeã¯æ¬¡ã®ããã«å®çŸ©ãããŠããŸãã
namespace NRecursedType { enum EEnum { kRecursed, kWildcardOnlyRecursed, kNonRecursed }; }
2çªç®ã®æ¡ä»¶ãæºããããããšã¯ãããŸããã ãã®åé¡ãããã«è©³ããç解ããŠã¿ãŸãããã ã³ãã³ãã©ã€ã³ãªãã·ã§ã³ã®èª¬æã«åºã¥ããŠã
-rãªãã·ã§ã³ã¯ãµããã£ã¬ã¯ããªã®ååž°ã®äœ¿çšã«ã€ããŠèª¬æããŸãã
-r0ãã©ã¡ãŒã¿ãŒã®å Žå
ãååž°ã¯ã¯ã€ã«ãã«ãŒãåã«ã®ã¿äœ¿çšãããŸãã ããã
NRecursedTypeã®å®çŸ©ãšæ¯èŒãããšã2çªç®ã®ã±ãŒã¹ã§ã¯ãã¿ã€ã
NRecursedType :: kWildcardOnlyRecursedã䜿çšããå¿
èŠããããšçµè«ä»ããããšãã§ã
ãŸãã æ£ããã³ãŒãã¯æ¬¡ã®ããã«ãªããŸãã
static void AddRenamePair(...., NRecursedType::EEnum type, ....) { .... if (type == NRecursedType::kRecursed) val.AddAscii("-r"); else if (type == NRecursedType::kWildcardOnlyRecursed)
åžžã«çãŸãã¯åœã®æ¡ä»¶
眲åä»ãã¿ã€ããšçœ²åãªãã¿ã€ãã®ã©ã¡ãã§äœæ¥ããŠãããã泚ææ·±ãç£èŠããå¿
èŠããããŸãã ãããã®æ©èœãç¡èŠãããšãäžå¿«ãªçµæãæãå¯èœæ§ããããŸãã
V547åŒ 'newSize <0'ã¯åžžã«falseã§ãã 笊å·ãªãã®åã®å€ã<0ã«ãªãããšã¯ãããŸããupdate.cpp 254
ããã¯ããã®èšèªæ©èœãç¡èŠãããããã°ã©ã ã®ã³ãŒãã®äŸã§ãã
STDMETHODIMP COutMultiVolStream::SetSize(UInt64 newSize) { if (newSize < 0)
åé¡ã¯ã
newSizeã笊å·ãªãã§ãããæ¡ä»¶ãæºããããªãããšã§ãã è² ã®å€ã
SetSizeé¢æ°ã«æž¡ããããšããã®ãšã©ãŒã¯ç¡èŠãããé¢æ°ã¯ééã£ããµã€ãºã䜿çšããŠèµ·åããŸãã 7-Zipã«ã¯ãããã«2ã€ã®æ¡ä»¶ãããã笊å·ä»ã/笊å·ãªãã®æ··ä¹±ã«ãããåžžã«trueãŸãã¯åžžã«falseã«ãªããŸãã
- V547åŒ 'rec.SiAttr.SecurityId> = 0'ã¯åžžã«trueã§ãã 笊å·ãªãã®åã®å€ã¯åžžã«> = 0ã§ããntfshandler.cpp 2142
- V547åŒ 's.LenïŒïŒ> = 0'ã¯åžžã«trueã§ãã 笊å·ãªãã®åã®å€ã¯åžžã«> = 0ã§ããxarhandler.cpp 258
åãæ¡ä»¶ã2åãã§ãã¯ãããŸã
ã¢ãã©ã€ã¶ãŒã¯ãåãæ¡ä»¶ãäºéãã§ãã¯ãããŠãããšããäºå®ã«èµ·å ããæœåšçãªãšã©ãŒãæ€åºããŸããã
V571å®æçãªãã§ãã¯ã 'ifïŒResultïŒ=ïŒïŒHRESULTïŒ0LïŒïŒ'æ¡ä»¶ã¯ã56è¡ç®ã§æ¢ã«æ€èšŒãããŠããŸããextractengine.cpp 58
ã³ãŒãã¹ããããã¯æ¬¡ã®ããã«ãªããŸãã
void Process2() { .... if (Result != S_OK) { if (Result != S_OK)
ã»ãšãã©ã®å Žåããã®ç¶æ³ã§ã¯ã2çªç®ã®ãã§ãã¯ã¯åçŽã«åé·ã§ãããã³ããŒåŸã®ããã°ã©ããŒã2çªç®ã®æ¡ä»¶ãå€æŽããããšã©ãŒã§ããããšãå€æããç¶æ³ãèããããŸãã
7-Zipã³ãŒãå
ã®ããé¡äŒŒããå ŽæïŒ
- V571å®æçãªãã§ãã¯ã 'ïŒQuoteMode'æ¡ä»¶ã¯ã18è¡ç®ã§æ¢ã«æ€èšŒãããŠããŸããstringutils.cpp20
- V571å®æçãªãã§ãã¯ã ãIsVarStrïŒparams [1]ã22ïŒãæ¡ä»¶ã¯ã3377è¡ç®ã§æ¢ã«æ€èšŒãããŠããŸããnsisin.cpp 3381
ãã€ã³ã¿ãŒã䜿çšããçãããäœæ¥
ãŸãããã€ã³ã¿ãŒãå
é ã§éæ¥åç
§ãããŠããå Žåã7-Zipã³ãŒãã«ãšã©ãŒãããããã®å Žåã®ã¿ãŒããšçãããã©ããããã§ãã¯ãããŸãã
V595 nullptrã«å¯ŸããŠæ€èšŒãããåã«ããoutStreamSpecããã€ã³ã¿ãŒã䜿çšãããŸããã è¡ã確èªããŠãã ããïŒ753ã755ãlzmaalone.cpp 753ã
ããã¯ããã¹ãŠã®ããã°ã©ã ã§éåžžã«
ããããééãã§ãã ããã¯éåžžãã³ãŒãã®ãªãã¡ã¯ã¿ãªã³ã°ã®ããã»ã¹ã«ãããäžæ³šæãåå ã§çºçããŸãã nullãã€ã³ã¿ãŒã«ã¢ã¯ã»ã¹ãããšãæªå®çŸ©ã®ããã°ã©ã ã®åäœãçºçããŸãã ãã®ã¿ã€ãã®ãšã©ãŒãå«ãã¢ããªã±ãŒã·ã§ã³ã³ãŒããã©ã°ã¡ã³ããèããŠã¿ãŸãããã
static int main2(int numArgs, const char *args[]) { .... if (!stdOutMode) Print_Size("Output size: ", outStreamSpec->ProcessedSize);
outStreamSpecãã€ã³ã¿ãŒ
㯠ã
outStreamSpec-> ProcessedSizeåŒã§éåç
§ãããŸãã 次ã«ããŒããšçãããã©ããããã§ãã¯ãããŸãã ãã€ã³ã¿ãŒãããã«é«ããã§ãã¯ããå¿
èŠããããŸããããã§ãªãå Žåã以äžã§çºçãããã§ãã¯ã¯ç¡æå³ã§ãã 以äžã«ãããã°ã©ã ã³ãŒãå
ã®æœåšçã«åé¡ã®ããå Žæã®ãªã¹ãã瀺ããŸãã
- V595 nullptrã«å¯ŸããŠæ€èšŒãããåã«ã '_ file'ãã€ã³ã¿ãŒã䜿çšãããŸããã è¡ã確èªããŠãã ããïŒ2099ã2112ãbench.cpp 2099
- V595 nullptrã«å¯ŸããŠæ€èšŒãããåã«ããaiããã€ã³ã¿ãŒã䜿çšãããŸããã è¡ã確èªïŒ204ã214ãupdatepair.cpp 204
- V595 nullptrã«å¯ŸããŠæ€èšŒãããåã«ãããªãã·ã§ã³ããã€ã³ã¿ãŒã䜿çšãããŸããã è¡ã確èªïŒ631ã636ãzipupdate.cpp 631
- V595 nullptrã«å¯ŸããŠæ€èšŒãããåã«ããvolStreamSpecããã€ã³ã¿ãŒã䜿çšãããŸããã è¡ã確èªããŠãã ããïŒ856ã863ãupdate.cpp 856
ãã¹ãã©ã¯ã¿å
ã®äŸå€
ããã°ã©ã ã§äŸå€ãçºçãããšãã¹ã¿ãã¯ã®æãããã¿ãéå§ããããã®éããã¹ãã©ã¯ã¿ãåŒã³åºãããšã«ãããªããžã§ã¯ããç Žæ£ãããŸãã ã¹ã¿ãã¯ã®åŽ©å£æã«ç Žæ£ããããªããžã§ã¯ãã®ãã¹ãã©ã¯ã¿ãå¥ã®äŸå€ãã¹ããŒãããã¹ãã©ã¯ã¿ããã®äŸå€ãæ®ãå ŽåãC ++ã©ã€ãã©ãªã¯
terminateïŒïŒé¢æ°ãåŒã³åºããŠããã°ã©ã ãçŽã¡ã«çµäºããŸãã ãããã£ãŠããã¹ãã©ã¯ã¿ã¯æ±ºããŠäŸå€ãã¹ããŒãã¹ãã§ã¯ãããŸããã ãã¹ãã©ã¯ã¿å
ã§ã¹ããŒãããäŸå€ã¯ãåããã¹ãã©ã¯ã¿å
ã§åŠçããå¿
èŠããããŸãã
ã¢ãã©ã€ã¶ãŒã¯æ¬¡ã®ã¡ãã»ãŒãžãçºè¡ããŸããã
V509ãã¹ãã©ã¯ã¿å
ã®ãã¹ããŒãæŒç®åã¯ãtry..catchãããã¯å
ã«é
眮ããå¿
èŠããããŸãã ãã¹ãã©ã¯ã¿å
ã§äŸå€ãçºçãããããšã¯éæ³ã§ãã consoleclose.cpp 62
ãããŠãäŸå€ãã¹ããŒãããã¹ãã©ã¯ã¿ã¯æ¬¡ã®ããã«ãªããŸãã
CCtrlHandlerSetter::~CCtrlHandlerSetter() { #if !defined(UNDER_CE) && defined(_WIN32) if (!SetConsoleCtrlHandler(HandlerRoutine, FALSE)) throw "SetConsoleCtrlHandler fails";
ã¡ãã»ãŒãžV509ã¯ãäŸå€åŠçäžã«CCtrlHandlerSetterãªããžã§ã¯ããç Žå£ããããšãæ°ããäŸå€ã«ããããã°ã©ã ãå³åº§ã«ã¯ã©ãã·ã¥ããããšãèŠåããŠããŸãã ãã®ã³ãŒãã¯ãäŸå€ã¡ã«ããºã ã䜿çšããã«ãã¹ãã©ã¯ã¿ã§çºçãããšã©ãŒãå ±åããããã«æžãçŽãå¿
èŠããããŸãã ãšã©ãŒãé倧ã§ãªãå Žåã¯ãç¡èŠã§ããŸãã
CCtrlHandlerSetter::~CCtrlHandlerSetter() { #if !defined(UNDER_CE) && defined(_WIN32) try { if (!SetConsoleCtrlHandler(HandlerRoutine, FALSE)) throw "SetConsoleCtrlHandler fails";
ããŒã«åå€æ°ã®å¢å
æŽå²çã«ãå¢åæŒç®ã¯
boolåã®å€æ°ã«å¯ŸããŠèš±å¯ãããŠãããå€æ°ã®å€ã
trueã«èšå®ã
ãŸã ã ãã®æ©èœã¯ãããŒã«å€æ°ãè¡šãããã«ä»¥åã®æŽæ°å€ã䜿çšãããŠãããšããäºå®ã«é¢é£ããŠããŸãã ãã®åŸããã®æ©äŒã¯ããã°ã©ã ã®äžäœäºææ§ããµããŒãããããã«æ®ã£ãã C ++ 98æšæºä»¥éã
éæšå¥šãšããŠããŒã¯ã
ããŠããã䜿çšã¯
æšå¥šãããŠã
ãŸãã ã ä»åŸã®C ++ 17æšæºã§ã¯ãããŒã«å€æ°ã«å¢åã䜿çšããå¯èœæ§ãåé€å¯Ÿè±¡ãšããŠããŒã¯ãããŠããŸãã
7-Zipã³ãŒãã§ã¯ããã®å»æ¢ãããæ©èœã䜿çšãããå Žæãããã€ãèŠã€ãããŸããã
- V552ããŒã«åå€æ°ãã€ã³ã¯ãªã¡ã³ããããŠããŸãïŒnumMethods ++ã ããããã代ããã«å¥ã®å€æ°ãã€ã³ã¯ãªã¡ã³ãããå¿
èŠããããŸãã wimhandler.cpp 308
- V552ããŒã«åå€æ°ãã€ã³ã¯ãªã¡ã³ããããŠããŸãïŒnumMethods ++ã ããããã代ããã«å¥ã®å€æ°ãã€ã³ã¯ãªã¡ã³ãããå¿
èŠããããŸãã wimhandler.cpp 318
STDMETHODIMP CHandler::GetArchiveProperty(....) { .... bool numMethods = 0; for (unsigned i = 0; i < ARRAY_SIZE(k_Methods); i++) { if (methodMask & ((UInt32)1 << i)) { res.Add_Space_if_NotEmpty(); res += k_Methods[i]; numMethods++;
ãã®ç¶æ³ã§ã¯ã2ã€ã®ãªãã·ã§ã³ãå¯èœã§ãã ãŸãã¯ãå€æ°
numMethodsã¯ãã©ã°ã§ãããã®å ŽåãããŒã«å€
numMethods = trueã§åæåã䜿çšããæ¹ãé©å
ã§ã ã ãŸãã¯ãå€æ°ã®ååã§å€æãããšãããã¯æŽæ°ã§ãªããã°ãªããªãã«ãŠã³ã¿ã§ãã
倱æããã¡ã¢ãªå²ãåœãŠã確èªãã
ã¢ãã©ã€ã¶ãŒã¯ã
newãªãã¬ãŒã¿ãŒã«ãã£ãŠè¿ããããã€ã³ã¿ãŒã®å€ããŒããšæ¯èŒãããç¶æ³ãæ€åºããŸããã ååãšããŠãããã¯ãããã°ã©ã ãã¡ã¢ãªãå²ãåœãŠãããšãäžå¯èœãªå Žåãããã°ã©ããæåŸ
ããåäœãšã¯ç°ãªãåäœãããããšãæå³ããŸãã
V668ã¡ã¢ãªãŒããæ°èŠãæŒç®åã䜿çšããŠå²ãæ¯ããããããããã©ã°ã€ã³ããã€ã³ã¿ãŒããã«ã«å¯ŸããŠãã¹ãããæå³ããããŸããã ã¡ã¢ãªå²ãåœãŠãšã©ãŒã®å ŽåãäŸå€ãçæãããŸãã far.cpp 399
ããã°ã©ã ã³ãŒãã§ã¯æ¬¡ã®ããã«ãªããŸãã
static HANDLE MyOpenFilePluginW(const wchar_t *name) { .... CPlugin *plugin = new CPlugin( fullName,
newæŒç®åãã¡ã¢ãªãå²ãåœãŠãããªãã£ãå ŽåãC ++èšèªæšæºã«åŸã£ãŠãäŸå€
std :: bad_allocïŒïŒãã¹ããŒãããŸãã ãããã£ãŠããŒãã«çãããã©ããããã§ãã¯ããããšã¯æå³ããããŸããã ãã©ã°ã€ã³ãã€ã³ã¿ãŒããŒãã«ãªãããšã¯ãããŸããã ãã®é¢æ°ã¯å®æ°å€
INVALID_HANDLE_VALUEã決ããŠè¿ããŸããã ã¡ã¢ãªãå²ãåœãŠãããšãã§ããªãå Žåã¯ãããé«ãã¬ãã«ã§åŠçããã®ãæé©ãªäŸå€ãçºçãããŒããšçãããã©ããã®ãã§ãã¯ãç°¡åã«åé€ã§ããŸãã ããŠããŸãã¯ã¢ããªã±ãŒã·ã§ã³ã®äŸå€ãæãŸãããªãå Žåã¯ãäŸå€ãã¹ããŒããªã
newæŒç®åã䜿çšã§ããŸãããã®å Žåãæ»ãå€ããŒãã«ãã§ãã¯ã§ããŸãã ã¢ããªã±ãŒã·ã§ã³ã³ãŒãã«ã¯ãããã«3ã€ã®é¡äŒŒãããã§ãã¯ããããŸããã
- V668ã¡ã¢ãªã¯ãnewãæŒç®åã䜿çšããŠå²ãåœãŠãããããããm_Formatsããã€ã³ã¿ãŒãnullã«å¯ŸããŠãã¹ãããæå³ã¯ãããŸããã ã¡ã¢ãªå²ãåœãŠãšã©ãŒã®å ŽåãäŸå€ãçæãããŸãã enumformatetc.cpp 46
- V668ã¡ã¢ãªã¯ãnewãæŒç®åã䜿çšããŠå²ãåœãŠãããããããm_Statesããã€ã³ã¿ãŒãnullã«å¯ŸããŠãã¹ãããæå³ã¯ãããŸããã ã¡ã¢ãªå²ãåœãŠãšã©ãŒã®å ŽåãäŸå€ãçæãããŸãã bzip2decoder.cpp 445
- V668ãnewãæŒç®åã䜿çšããŠã¡ã¢ãªãå²ãåœãŠãããããããThreadsInfoããã€ã³ã¿ãŒãnullã«å¯ŸããŠãã¹ãããŠãæå³ããããŸããã ã¡ã¢ãªå²ãåœãŠãšã©ãŒã®å ŽåãäŸå€ãçæãããŸãã bzip2encoder.cpp 170
æé©åãå¿
èŠãªæ§é
æœåšçã«æé©åã§ããå Žæã«ã€ããŠå°ã説æããŸãã ãªããžã§ã¯ããé¢æ°ã«æž¡ãããŸãã ãã®ãªããžã§ã¯ãã¯å€ã§æž¡ãããŸããã
constããŒã¯ãŒããããããå€æŽãããŸããã C ++ã®å®æ°åç
§ãŸãã¯Cã®ãã€ã³ã¿ãŒã䜿çšããŠæž¡ãã®ãåççãããããŸããã
ãã¯ãã«ã®äŸã次ã«ç€ºããŸãã
V801ããã©ãŒãã³ã¹ã®äœäžã æåã®é¢æ°åŒæ°ãåç
§ãšããŠåå®çŸ©ããããšããå§ãããŸãã ãconst ... pathPartsãããconst ...ïŒpathPartsãã«çœ®ãæããããšãæ€èšããŠãã ããã wildcard.cpp 487
static unsigned GetNumPrefixParts(const UStringVector pathParts) { .... }
ãã®é¢æ°ãåŒã³åºããããšã
UStringVectorã¯ã©ã¹ã®ã³ããŒã³ã³ã¹ãã©ã¯ã¿ãŒã
åŒã³åºãããŸãã ãã®ãããªãªããžã§ã¯ãã®ã³ããŒãé »ç¹ã«çºçããå Žåãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã倧å¹
ã«äœäžããå¯èœæ§ããããŸãã ãã®ã³ãŒãã¯ããªã³ã¯ãè¿œå ããããšã§ç°¡åã«æé©åã§ããŸãã
static unsigned GetNumPrefixParts(const UStringVector& pathParts) { .... }
åæ§ã®å Žæãããã€ããããŸãã
- V801ããã©ãŒãã³ã¹ã®äœäžã æåã®é¢æ°åŒæ°ãåç
§ãšããŠåå®çŸ©ããããšããå§ãããŸãã ãconst ... propsãããconst ...ïŒpropsãã«çœ®ãæããããšãæ€èšããŠãã ããã benchdialog.cpp 766
- V801ã€ã³ã¹ã¿ã³ã¹åCRecordVector <CAttribIconPair>ïŒããã©ãŒãã³ã¹ã®äœäžã æåã®é¢æ°åŒæ°ãåç
§ãšããŠåå®çŸ©ããããšããå§ãããŸãã ãconst ... itemãããconst ...ïŒitemãã«çœ®ãæããããšãæ€èšããŠãã ããã yvector.h 199
ãããã«
7-Zipã¯é·ãééçºãããŠããå°ããªãããžã§ã¯ãã§ããããã¡ããå€æ°ã®é倧ãªãšã©ãŒãèŠã€ããããšã¯ã§ããŸããã§ããã ãã ããã³ãŒãã«ã¯æ³šæãå¿
èŠãªå ŽæããŸã ãããPVS-Studioéçã³ãŒãã¢ãã©ã€ã¶ãŒã¯ãã®äœæ¥ã倧å¹
ã«ä¿é²ããŸãã CãC ++ããŸãã¯CïŒã§ãããžã§ã¯ããéçºããŠããå Žåã¯ãããã«PVS-StudioãããŠã³ããŒãããŠãããžã§ã¯ãã確èªããããšããå§ãããŸã
ãhttp ïŒ
//www.viva64.com/en/pvs-studio-download/ãã®èšäºãè±èªåã®èŽè¡ãšå
±æãããå Žåã¯ã翻蚳ãžã®ãªã³ã¯ã䜿çšããŠãã ããïŒKirill Yudintsevã
PVS-Studioã¢ãã©ã€ã¶ãŒã§7-Zipã確èªããŸã ã