
PVS-Studioéçã³ãŒãã¢ãã©ã€ã¶ãŒã䜿çšããŠãMiranda NGãããžã§ã¯ãã§èŠã€ãã£ããšã©ãŒãåŒãç¶ãæ€èšããŸãã ååããã€ã³ã¿ãŒãšã¡ã¢ãªã®æäœã«ã€ããŠè©±ããŸããã æ¬¡ã«ãäž»ã«ãããããšã¿ã€ããã¹ã«é¢é£ããäžè¬çãªãšã©ãŒã«ã€ããŠèª¬æããŸãã
æ€èšŒãç¶ãã
Miranda NGã³ãŒãã¬ãã¥ãŒã®åã®éšåã¯ã
ããããå
¥æã§ã
ãŸã ã
ã¿ã€ããã¹
ãã®ãããªçŸããã¿ã€ããã¹ããå§ããŸãã ã=ãããŒã®é£ã«ã¯ã-ãããŒããããŸãã ããã«ãããæ¬¡ã®ããšãèµ·ãããŸããã
CBaseTreeItem* CMsgTree::GetNextItem(....) { .... int Order = TreeCtrl->hItemToOrder(TreeView_GetNextItem(....)); if (Order =- -1) return NULL; .... }
PVS-StudioèŠåïŒ
V559 'if'æŒç®åã®æ¡ä»¶åŒå
ã®çãããå²ãåœãŠïŒé åº=--1. NewAwaySys msgtree.cpp 677
åœç¶ãifïŒOrder == -1ïŒã®ããã«èšè¿°ããå¿
èŠããããŸãã
ãããŠãããã§åœŒãã¯ã¢ã¹ã¿ãªã¹ã¯ã*ããå¿ããŸããïŒ
HWND WINAPI CreateRecentComboBoxEx(....) { .... if (dbv.ptszVal != NULL && dbv.ptszVal != '\0') { .... }
PVS-Studioã®
èŠå ïŒ
V501 '&&'æŒç®åã®å·Šå³ã«åã坿¬¡åŒããããŸãïŒdbv.ptszValïŒ= 0 && dbv.ptszValïŒ= '\ 0' SimpleStatusMsg msgbox.cpp 247
圌ãã¯ããã€ã³ã¿ããŒã以å€ã§ãããæååã空ã§ãªãããšã確èªãããã£ãã®ã§ãã ãããããã€ã³ã¿ãŒã®éåç
§ãå¿ããŠããŸããã ãŒããžã®ç䟡æ§ãžã®ãã€ã³ã¿ãŒãããã«ãã§ãã¯ããããšã倿ããŸããã
æ£ãããªãã·ã§ã³ïŒ
if (dbv.ptszVal != NULL && *dbv.ptszVal != '\0') {
ãã®ãšã©ãŒã¯ãå¥ã®èšºæã䜿çšããŠæ€åºãããŸãïŒ
V528 ãwchar_tãã¿ã€ããžã®ãã€ã³ã¿ãŒãLã\ 0ãå€ãšæ¯èŒãããã®ã¯å¥åŠã§ãã ããããæ¬¡ã®æå³ïŒ* dbv.ptszValïŒ= L '\ 0'ã SimpleStatusMsg msgbox.cpp 247
ããã¯ã2ã€ãŸãã¯3ã€ã®èšºæã§1ã€ã®ãšã©ãŒã瀺ãããäžè¬çãªç¶æ³ã§ãã ãã®ãšã©ãŒã«ãããããã€ãã®èгç¹ããã³ãŒããäžåºŠã«çãããããšãããããŸãã
ããã«ããã€ãã®V528ããããé©åãªã³ãŒãã確èªããããšããå§ãããŸãã
- options.cpp 759
- exportimport.cpp 425
- exportimport.cpp 433
- exportimport.cpp 441
ç¹å®ã®ããããŒé
åãèªåèªèº«ã«ã³ããŒãããŸãã ã»ãšãã©ã®å Žåãããã«ããã€ãã®ã¿ã€ããã¹ããããŸãã
int InternetDownloadFile (char *szUrl) { .... CopyMemory(nlhr.headers, nlhr.headers, sizeof(NETLIBHTTPHEADER)*nlhr.headersCount); .... }
èŠåPVS-StudioïŒ
V549 'memcpy'颿°ã®æåã®åŒæ°ã¯2çªç®ã®åŒæ°ãšåãã§ãã NimContact http.cpp 46
åæ§ã®ç¶æ³ããã1ã€ãããŸãã
TCHAR* get_response(TCHAR* dst, unsigned int dstlen, int num) { .... TCHAR *tmp, *src = NULL; .... src = (TCHAR*)malloc(MAX_BUFFER_LENGTH * sizeof(TCHAR)); .... _tcscpy(src, src); .... }
èŠåPVS-StudioïŒV549 'wcscpy'颿°ã®æåã®åŒæ°ã¯2çªç®ã®åŒæ°ãšåãã§ãã Spamotron utils.cpp 218
æååã¯ããèªäœã«ã³ããŒãããŸãã ãdstããã€ã³ã¿ãŒãåŒæ°ã®1ã€ãšããŠäœ¿çšããå¿
èŠããã£ããšæãããŸãã
#define TTBBF_ISLBUTTON 0x0040 INT_PTR TTBAddButton(WPARAM wParam, LPARAM lParam) { .... if (!(but->dwFlags && TTBBF_ISLBUTTON) && nameexists(but->name)) return -1; .... }
èŠåPVS-StudioïŒ
V560æ¡ä»¶åŒã®äžéšã¯åžžã«çã§ãïŒ0x0040ã TopToolBar toolbar.cpp 307
ãããããæãã²ãã€ãããïŒãã®ä»£ããã«ã&&ãã«ãªããŸããã
æåŸã®ã±ãŒã¹ã§ã¯ãæ¯èŒã®ä»£ããã«å²ãåœãŠãçºçããŸãã
#define MAX_REPLACES 15 INT_PTR CALLBACK DlgProcCopy(....) { .... if (string == newString[k]) k--; if (k = MAX_REPLACES) break; string = oldString[++k]; i+=2; .... }
PVS-Studio
èŠå ïŒ
V559 'if'æŒç®åã®æ¡ä»¶åŒå
ã®çãããå²ãåœãŠïŒk =15ãNimContactcontactinfo.cpp 339
äžå®å
šãªã³ãŒã
INT_PTR SVC_OTRSendMessage(WPARAM wParam,LPARAM lParam){ .... CCSDATA *ccs = (CCSDATA *) lParam; .... if (otr_context_get_trust(context) >= TRUST_UNVERIFIED) ccs->wParam; .... }
PVS-Studioã®
èŠå ïŒ
V607ææè
ãªãã®è¡šçŸ 'ccs-> wParam'ã MirOTR svcs_proto.cpp 103
æ¡ä»¶ãæºãããããšãäœãèµ·ãããŸããã ããããã倿°ãccs-> wParamãã«å€ãå²ãåœãŠãããšèããŠããã®ã§ãããã åæ§ã®èŠåãããã«çºè¡ãããŸãïŒbandctrlimpl.cpp 226ã
ãããŠãããã«æªå®æã®ã«ãŒãããããŸãïŒ
extern "C" __declspec(dllexport) int Load(void) { .... for (i = MAX_PATH; 5; i--){ .... }
PVS-StudioèŠåïŒ
V654ã«ãŒãã®æ¡ä»¶ã5ãã¯åžžã«çã§ãã Xfire main.cpp 1110
ã«ãŒãã«äœãåé¡ããããŸãã ãiããšã5ããæ¯èŒããã®ãå¿ããŠãããšæããŸãã ããã«ããã®ãµã€ã¯ã«ã¯ããã°ã©ã ã®ãã1ã€ã®å Žæãvariables.cpp 194ã«ã³ããŒãããŸãã
äžæ³šæ
int findLine(...., int *positionInOldString) { .... *positionInOldString ++; return (linesInFile - 1); } .... }
V532ã*ãã€ã³ã¿ãŒ++ããã¿ãŒã³ã®ã¹ããŒãã¡ã³ãã®æ€æ»ãæ€èšããŠãã ããã ããããæå³ïŒãïŒ*ãã€ã³ã¿ãŒïŒ++ãã NimContact namereplacing.cpp 92
'positionInOldString'ãã€ã³ã¿ãŒã«ãã£ãŠåç
§ããã倿°ã倿Žããããšãã倧ããªç念ããããŸãã ãããããã€ã³ã¿ãŒèªäœã倿Žãããããšã倿ããŸããã
ã»ãšãã©ã®å Žåãã³ãŒãã¯æ¬¡ã®ããã«å€æŽããå¿
èŠããããŸãã
(*positionInOldString)++;
å€ã®äžæžã
INT_PTR TTBSetState(WPARAM wParam, LPARAM lParam) { mir_cslock lck(csButtonsHook); TopButtonInt *b = idtopos(wParam); if (b == NULL) return -1; b->bPushed = (lParam & TTBST_PUSHED) ? TRUE : FALSE; b->bPushed = (lParam & TTBST_RELEASED) ? FALSE : TRUE; b->SetBitmap(); return 0; }
PVS-StudioèŠåïŒ
V519 ãb-> bPushedã倿°ã«ã¯ãé£ç¶ããŠ2åå€ãå²ãåœãŠãããŸãã ããããããã¯ééãã§ãã è¡ã確èªããŠãã ããïŒ358ã359ãTopToolBar toolbar.cpp 359
æåã¯å€æ°ã«å€ãèšå®ãããŠããã®ã«ãçªç¶å¥ã®å€ã«å€æŽãããã®ã¯å¥åŠã§ãã
å¥ã®äŸïŒ
static INT_PTR CALLBACK sttOptionsDlgProc(....) { .... rc.left += 10; rc.left = prefix + width * 0; .... }
V519ãrc.leftã倿°ã«ã¯å€ãé£ç¶ããŠ2åå²ãåœãŠãããŸãã ããããããã¯ééãã§ãã è¡ã確èªããŠãã ããïŒ583ã585ãMiranda hotkey_opts.cpp 585
ãã¡ããã2ã€ã®ç°ãªãå€ãé£ç¶ããŠ1ã€ã®å€æ°ã«æžã蟌ãããšã¯ãå¿
ããããšã©ãŒã§ã¯ãããŸããã 念ã®ããã倿°ããŒãã«åæåãããŠãã䜿çšãããå ŽåããããŸãã ä»ã«ãæ£ããç¶æ³ããããŸãã ããããç§ã®æèŠã§ã¯ãäžå¯©ãªã³ãŒã
MirandaNG-519.txtã瀺ã
14åã®èŠåãæžããŸããã
èŠåV519ã¯ããbreakãã¹ããŒãã¡ã³ããå¿ããããŠããç¶æ³ã鿥çã«æ€åºããå ŽåããããŸãã
void OnApply() { .... case ACC_FBOOK: m_proto->m_options.IgnoreRosterGroups = TRUE; case ACC_OK: m_proto->m_options.IgnoreRosterGroups = TRUE; m_proto->m_options.UseSSL = FALSE; m_proto->m_options.UseTLS = TRUE; case ACC_TLS: case ACC_LJTALK: case ACC_SMS: m_proto->m_options.UseSSL = FALSE; m_proto->m_options.UseTLS = TRUE; break; .... }
PVS-StudioèŠåïŒV519ãm_proto-> m_options.IgnoreRosterGroupsã倿°ã«ã¯ãé£ç¶ããŠ2åå€ãå²ãåœãŠãããŸãã ããããããã¯ééãã§ãã è¡ã確èªããŠãã ããïŒ1770ã1773ãJabber jabber_opt.cpp 1773
åãã³ãŒãã®æç
æ¡ä»¶ã«é¢ä¿ãªããåãã¢ã¯ã·ã§ã³ãå®è¡ãããå ŽæããããŸãã
static void Build_RTF_Header() { .... if (dat->dwFlags & MWF_LOG_RTL) AppendToBuffer(buffer, bufferEnd, bufferAlloced, "{\\rtf1\\ansi\\deff0{\\fonttbl"); else AppendToBuffer(buffer, bufferEnd, bufferAlloced, "{\\rtf1\\ansi\\deff0{\\fonttbl"); .... }
PVS-StudioèŠåïŒ
V523 ãthenãã¹ããŒãã¡ã³ãã¯ãelseãã¹ããŒãã¡ã³ããšåçã§ãã TabSRMM msglog.cpp 439
ãããããã³ãŒãã¯Copy-Pasteã䜿çšããŠäœæãããŸããã åæã«ãè¡ã®1ã€ãä¿®æ£ããã®ãå¿ããŠããŸããã
ãã®ãããªäžå¯©ãªå Žæ
ã¯ããã«9ã€ãã
ãŸã ïŒ
MirandaNG-523.txt ã
ãã®å Žæã§äœããç²ããã 説æããå¿
èŠã®ããè±å¯ãªãšã©ãŒã«ç²ããŸããã ç§ã¯ãã§ã«2çªç®ã®èšäºãæžããŠããŸãããèŠåã«ã¯çµãããšç«¯ãèŠããŸããã ã³ãŒããŒã飲ã¿ãŸãã
ïŒæéãçµéããŸããïŒ
ããã§ã¯ãç¶ããŸãããã Copy-Pasteã¯æ¬¡ã®ããã«çŸããŸãïŒ
static int RoomWndResize(...., UTILRESIZECONTROL *urc) { .... urc->rcItem.top = (bToolbar && !bBottomToolbar) ? urc->dlgNewSize.cy - si->iSplitterY : urc->dlgNewSize.cy - si->iSplitterY; .... }
PVS-Studioã®
èŠå ïŒ
V583 ãïŒïŒãæŒç®åã¯ããã®æ¡ä»¶åŒã«é¢ä¿ãªããåžžã«1ã€ã®åãå€ãè¿ããŸãïŒurc-> dlgNewSize.cy-si-> iSplitterYã TabSRMM window.cpp 473
åãåŒãè©äŸ¡ãããå ŽåããªããïŒïŒãæŒç®åãå¿
èŠãªã®ã§ããïŒ
å¥ã®11åã®ç¡æå³ãªäžé
æŒç®åïŒ
MirandaNG-583.txtçãããéšéæäœ
void CSkin::setupAeroSkins() { .... BYTE alphafactor = 255 - ((m_dwmColor & 0xff000000) >> 24); .... fr *= (alphafactor / 100 * 2.2); .... }
PVS-Studio
èŠå ïŒ
V636 ãalphafactor / 100ãåŒã¯ãæé»çã«ãintãåãããfloatãåã«ãã£ã¹ããããŸããã åæ°éšåã®æå€±ãé¿ããããã«ãæç€ºçãªåãã£ã¹ãã®äœ¿çšãæ€èšããŠãã ããã äŸïŒdouble A =ïŒdoubleïŒïŒXïŒ/ Y;ã TabSRMM themes.cpp 1753
ç§ã¯ãããã°ã©ããŒããalphafactor / 100ãã®é€ç®ãæŽæ°ã§ã¯ãªãããšãæãã§ããã®ã§ã¯ãªãããšçã£ãŠããŸãã ããã§ãBYTEåã®å€æ°ã100ã§é€ç®ãããšã0ã1ã2ã®3ã€ã®å€ããååŸã§ããªãããšãããããŸãã
ããããæ¬¡ã®ããã«åå²ããå¿
èŠããããŸãã
fr *= (alphafactor / 100.0 * 2.2);
åããã¡ã€ã«ã§ã1758è¡ãš1763è¡ã«ããã«2ã€ã®äžå¯©ãªé€ç®æäœããããŸãã
WTFïŒ
static INT_PTR CALLBACK DlgProc_EMail(....) { case WM_COMMAND: switch (LOWORD(wParam)) { if (HIWORD(wParam) == BN_CLICKED) { case IDOK: .... }
PVS-StudioèŠåïŒ
V622 ãswitchãã¹ããŒãã¡ã³ãã®æ€æ»ãæ€èšããŠãã ããã æåã®ãã±ãŒã¹ãæŒç®åãæ¬ èœããŠããå¯èœæ§ããããŸãã UInfoEx ctrl_contact.cpp 188
ãcase IDOKãã®åã®ãifïŒHIWORDïŒwParamïŒ== BN_CLICKEDïŒ{ããšããè¡ã¯äœã§ããïŒ åœŒå¥³ã¯ã³ã³ãããŒã«ãåŸãããšãã§ããŸããã ããã«ãã£ãŠããã°ã©ãã¯äœãæå³ããŸãããïŒ
å¥ã®ãã®ãããªå Žæã¯å°ãäžã§ãïŒè¡290ïŒã
å¥åŠãªãã©ãŒããããããã³ãŒã
以äžã®ã³ãŒãã«äœãåé¡ããããŸãã ããããããã¯æç¢ºã§ã¯ãããŸããã ãã©ãŒããããé©åã§ãªããã远å ãããŠããŸããã
int ExtractURI(....) { .... while ( msg[i] && !_istspace(msg[i])) { if ( IsDBCSLeadByte(msg[i] ) && msg[i+1]) i++; else <<<--- if ( _istalnum(msg[i]) || msg[i]==_T('/')) { cpLastAlphaNum = charCount; iLastAlphaNum = i; } charCount++; i++; } .... }
PVS-StudioèŠåïŒ
V705 ãelseããããã¯ãå¿ããããŠãããã³ã¡ã³ãã¢ãŠããããŠããå¯èœæ§ãããããã®ããããã°ã©ã ã®æäœããžãã¯ã倿ŽãããŠããŸãã LinkList linklist_fct.cpp 92
å¥åŠãªããã®ä»ãã«æ³šæããŠãã ããã
ããã¯æ¬¡ã®ãããªãã®ã§ãã
void CInfoPanel::renderContent(const HDC hdc) { .... if (m_height >= DEGRADE_THRESHOLD) rc.top -= 2; rc.bottom -= 2; .... }
PVS-StudioèŠåïŒV640ã³ãŒãã®æäœããžãã¯ã¯ãã®ãã©ãŒãããã«å¯Ÿå¿ããŠããŸããã 2çªç®ã®ã¹ããŒãã¡ã³ãã¯åžžã«å®è¡ãããŸãã äžæ¬åŒ§ãæ¬ èœããŠããå¯èœæ§ããããŸãã TabSRMM infopanel.cpp 370
ããã°ã©ããäžæ¬åŒ§ãæžãã®ãå¿ããå¯èœæ§ãéåžžã«é«ãã§ãã ãã¥ãŒã¹ã¯åžžã«ãrc.bottomãããæžç®ãããŸãã
æã話ã¯ããã§çµãããŸããã ããªãã¯ãŸã ãããèŠãå¿
èŠããããŸãïŒ
- msn_p2p.cpp 385
- crypt_lists.cpp 13
- crypt_lists.cpp 44
- common.c 273
- common.c 307
æãè峿·±ãå Žæã§ãµã€ã¯ã«ã忢ãã
bool PopupSkin::load(LPCTSTR dir) { .... while (hFind != INVALID_HANDLE_VALUE) { loadSkin(ffd.cFileName); break; if (!FindNextFile(hFind, &ffd)) break; } .... }
PVS-StudioèŠåïŒ
V612ã«ãŒãå
ã®ç¡æ¡ä»¶ã®ããã¬ãŒã¯ãã ãããã¢ããskin.cpp 807
ã«ãŒãã®éäžã§ããã¬ãŒã¯ããå¿
èŠãªã®ã¯ãªãã§ããïŒ ãªãã¡ã¯ã¿ãªã³ã°ã®å€±æã®çµæã¯ïŒ æ®å¿µãªãããå¯äžã®ãã®ã§ã¯ãããŸããïŒ
- icq_servlist.cpp 226
- rawping.cpp 159
- main.cpp 304
- gfileutils.c 266
åžžã«çãŸãã¯åœã®æ¡ä»¶
ã»ãšãã©ã®å Žåããã®ãšã©ãŒã¯ïŒUNSIGNED <0ïŒãŸãã¯ïŒUNSIGNED> = 0ïŒã®åœ¢åŒã®ãã§ãã¯ã«é¢é£ããŠããŸãã ãããããã£ãšãšããŸããã¯ãªãªãã·ã§ã³ããããŸãã ãã€ã³ã¿ãŒã¯æååãšæ¯èŒãããŸãã
static void yahoo_process_search_connection(....) { .... if (cp != "\005") .... }
èŠåPVS_StudioïŒ
V547åŒ 'cpïŒ= "\ 005"'ã¯åžžã«trueã§ãã æååãæ¯èŒããã«ã¯ãstrcmpïŒïŒé¢æ°ã䜿çšããå¿
èŠããããŸãã Yahoo libyahoo2.cpp 4486
ãããããžã£ã³ã«ã®å€å
žã«æ»ã£ãŠã äŸã¯1ã€ã ãã§ãæ®ãã®èŠåã¯éåžžã©ãããªã¹ãã«ãªããŸãã
ULONG_PTR itemData; LONG_PTR CALLBACK HotkeyHandlerDlgProc(....) { .... if (dis->itemData >= 0) { .... }
PVS-StudioèŠåïŒV547åŒ 'dis-> itemData> = 0'ã¯åžžã«trueã§ãã 笊å·ãªãã®åã®å€ã¯åžžã«> = 0ã§ããTabSRMM hotkeyhandler.cpp 213
çŽæãªã¹ãïŒ
MirandaNG-547.txtstrchrïŒïŒããã³strrchrïŒïŒãã©ã®ããã«æ©èœãããã誰ããç¥ããªã
#define mir_strchr(s,c) (((s)!=0)?strchr((s),(c)):0) #define mir_strrchr(s,c) (((s)!=0)?strrchr((s),(c)):0) BYTE CExImContactBase::fromIni(LPSTR& row) { .... if (cchBuf > 10 && (p1 = mir_strrchr(pszBuf, '*{')) && (p2 = mir_strchr(p1, '}*')) && p1 + 2 < p2) { .... }
PVS-Studioã®èŠåïŒ
- V575ãstrrchrã颿°ã¯å€ã10875ããåŠçããŸãã 2çªç®ã®åŒæ°ã調ã¹ãŸãã UInfoEx classeximcontactbase.cpp 177
- V575ãstrchrã颿°ã¯å€ã32042ããåŠçããŸãã 2çªç®ã®åŒæ°ã調ã¹ãŸãã UInfoEx classeximcontactbase.cpp 177
ã©ãããã誰ããæåã* {ããšã} *ãã§å²ãŸããããã¹ããèŠã€ããããšæã£ãŠããããã§ãã ããããããã¯ããçš®ã®æãããæããã«ããŸããã
ãŸããstrchrïŒïŒããã³strrchrïŒïŒé¢æ°ã¯ããµãã¹ããªã³ã°ã§ã¯ãªãåäžã®æåãæ¢ããŸãã
次ã«ãã* {ãã¯çªå·10875ãšããŠè§£éãããŸãã颿°ã¯ãã¿ã€ããintãã®å€ã2çªç®ã®åŒæ°ãšããŠæåŸ
ããŸãããããã¯äœãæå³ããŸããã ãããã¯ããã®åŒæ°ã®äžäœãã€ãã®ã¿ã䜿çšããŸãã
æ®å¿µãªãããããã¯å¶ç¶ã§ã¯ãªããäœç³»çãªãšã©ãŒã§ãã
åã誀ã£ãåŒã³åºãã
10åãããŸãïŒ
MirandaNG-575.txt ã
æªå®çŸ©ã®åäœ
void FacebookProto::UpdateLoop(void *) { .... for (int i = -1; !isOffline(); i = ++i % 50) .... }
èŠåPVS-StudioïŒ
V567æªå®çŸ©ã®åäœã 'i'倿°ã¯ãã·ãŒã±ã³ã¹ãã€ã³ãéã§2å䜿çšãããŠããéã«å€æŽãããŸãã Facebook connection.cpp 191
ããã«ã¯ãã¹ãã€ã³ã¯ãªã¡ã³ãããªãã®ã§ãããªãã¯ãã®ããã«æžãããšãã§ãããšèšãå§ãã人ããããã³ã«ã ããã¯ä»ã®èšäºã§è€æ°åè°è«ãããŠããŸãã ããããããªãã¯ãã®ããã«æžãããšã¯ã§ããŸããã
ãããæžãæ¹ãããæ£ç¢ºã§çè§£ããããã§ãããïŒi =ïŒi + 1ïŒïŒ
50ã
å¥ã®å±éºãªå ŽæïŒdlg_handlers.cpp 883ã
ããã«è峿·±ãäŸãèããŠã¿ãŸãããã
void importSettings(MCONTACT hContact, char *importstring ) { .... char module[256] = "", setting[256] = "", *end; .... if (end = strpbrk(&importstring[i+1], "]")) { if ((end+1) != '\0') *end = '\0'; strcpy(module, &importstring[i+1]); } .... }
èŠåPVS_StudioïŒ
V694æ¡ä»¶ïŒïŒend + 1ïŒïŒ= '\ 0'ïŒã¯ããšã«ããæªå®çŸ©ã®åäœã§ãããã€ã³ã¿ãŒãªãŒããŒãããŒãããå Žåã«ã®ã¿falseã§ãã DbEditorPP exportimport.cpp 425
äžè¬çã«ãããã«ãããµããã¿ã€ããã¹ããããŸãã ãçµäºããã€ã³ã¿ãçµç«¯ãŒãã®åã®æåãæããŠããããšã確èªãããã£ãã®ã§ãã ãšã©ãŒã¯ããã€ã³ã¿ãŒã®éåç
§ãå¿ããããšã§ãã ããã¯æžãããã¹ãã§ãïŒ
if (*(end+1) != '\0')
ãããŠãäžå®ã®åäœã¯ã©ãã«ãããŸããïŒ ããã«ã€ããŠèª¬æããŸãã
äžè¬ã«ããã®ãšã©ãŒã¯ä»ã®èšºæã§ã蚺æãããŸãïŒ
V528 ïŒã ããããç§ã¯ãããŸããªè¡åã«ã€ããŠè©±ãããšã«èå³ããããŸãã ã¢ãã©ã€ã¶ãŒãäœãäžæçãªããšãèšã£ããšããŠããæ¥ãã§ã¯ãããŸããããã³ãŒãã§åœŒãæ··ä¹±ããããšèããå¿
èŠããããŸãã
ãããã£ãŠããã€ã³ã¿ãŒã«1ã远å ãããšãåžžã«NULL以å€ã®å€ãååŸãããŸãã 1ã€ã®å Žåãé€ãããªãŒããŒãããŒãçºçãããšãNULLã«ãªããŸãã ããããèšèªæšæºã§ã¯ãããã¯ãããŸããªæ¯ãèãã§ãããšè¿°ã¹ãŠããŸãã
ãããã£ãŠãã¢ãã©ã€ã¶ãŒã¯ãåžžã«çã§ããããæªå®çŸ©ã®åäœã«ã€ãªããæ¡ä»¶ãèŠã€ããŸããã ããã¯ãã³ãŒãã«äœãåé¡ãããããšãæå³ããŸãã
ãã®ä»ã®èª€ã£ããã§ãã¯ïŒ
- exportimport.cpp 433
- exportimport.cpp 441
- openfolder.cpp 35
- skype.cpp 473
ãããŠãäžå®ã®æ¯ãèãã®ãããã¯ã«é¢ããæåŸã ã·ããã«ã€ããŠè©±ããŸãããïŒ
METHODDEF(boolean) decode_mcu_AC_refine (....) { .... m1 = (-1) << cinfo->Al; .... }
èŠåPVS-StudioïŒ
V610æªå®çŸ©ã®åäœã ã·ããæŒç®å '<<ã確èªããŠãã ããã å·Šã®ãªãã©ã³ã 'ïŒ-1ïŒ'ã¯è² ã§ãã AdvaImg jdarith.c 460
ãã©ã¹ïŒ
- jdhuff.c 930
- cipher.c 1529
ä»®æ³ãã¹ãã©ã¯ã¿ãªã
åºæ¬ã¯ã©ã¹CNetClientããããŸãã
class CNetClient { public: CNetClient(): Stopped(FALSE) {} virtual void Connect(const char* servername,const int port)=0; virtual void Send(const char *query)=0; virtual char* Recv(char *buf=NULL,int buflen=65536)=0; virtual void Disconnect()=0; virtual BOOL Connected()=0; virtual void SSLify()=0; .... };
ã芧ã®ãšãããä»®æ³é¢æ°ã¯ãããŸãããä»®æ³ãã¹ãã©ã¯ã¿ã¯ãããŸããã ä»ã®ããã€ãã®ã¯ã©ã¹ã¯ããããç¶æ¿ãããŸãïŒ
class CNLClient: public CNetClient { .... };
ãããŠæåŸã®ä»äžãã ããšãã°ã次ã®ãããªã¯ã©ã¹ããããŸãã
class CPop3Client { .... class CNetClient *NetClient; ~CPop3Client() { if (NetClient != NULL) delete NetClient; } .... };
PVS-Studio
èŠå ïŒ
V599 ãCNetClientãã¯ã©ã¹ã«ã¯ä»®æ³é¢æ°ãå«ãŸããŠããŸãããä»®æ³ãã¹ãã©ã¯ã¿ã¯ååšããŸããã YAMN pop3.h 23
çµæã¯æããã ãšæããŸãã ä»®æ³ãã¹ãã©ã¯ã¿ã«é¢ãã質åã¯ã2åç®ã®ã€ã³ã¿ãã¥ãŒã®ãã³ã«èãããŸãã
åæ§ã«ã次ã®ã¯ã©ã¹ã§ã¯ç©äºã¯è¯ããããŸããã
- Cupdprogress
- FactoryBase
- ContactCompareBase
誀ã£ãæååãã©ãŒããã
static const char* ConvertAnyTag(FITAG *tag) { .... UINT64 *pvalue = (UINT64 *)FreeImage_GetTagValue(tag); sprintf(format, "%ld", pvalue[0]); .... }
èŠåPVS-StudioïŒ
V576ã®åœ¢åŒãæ£ãããã
ãŸãã ã 'sprintf'颿°ã®3çªç®ã®å®åŒæ°ã確èªããããšãæ€èšããŠãã ããã åŒæ°ã¯32ããã以äžã§ãããšäºæ³ãããŸãã AdvaImg tagconversion.cpp 202
æ£ããè¡ãæ¹æ³ã¯ã ã
__int64ãsize_tãptrdiff_tåã®å€ãæ£ããå°å·ããæ¹æ³ ãã«èšèŒãããŠããŸãã
ããã«ãã³ãŒãå
ã®ãããã®å Žæãä¿®æ£ããå¿
èŠããããŸãïŒ
MirandaNG-576.txt ã
ãã®ä»
å¥åŠãªæ¯èŒïŒ
#define CPN_COLOURCHANGED 1 #define CBN_SELCHANGE 1 INT_PTR CALLBACK DlgPopupOpts(....) { .... if (wNotifyCode == CPN_COLOURCHANGED) { .... } else if (wNotifyCode == CBN_SELCHANGE) { .... } .... }
PVS-Studio
èŠå ïŒ
V517 ãifïŒAïŒ{...} else ifïŒAïŒ{...}ããã¿ãŒã³ã®äœ¿çšãæ€åºãããŸããã è«çãšã©ãŒãååšããå¯èœæ§ããããŸãã è¡ã確èªããŠãã ããïŒ243ã256ãPluginUpdater options.cpp 243
ZeroMemoryïŒïŒé¢æ°ã誀ã£ãŠäœ¿çšãããŠããŸãã
static int ScanFolder(....) { .... __except (EXCEPTION_EXECUTE_HANDLER) { ZeroMemory(szMyHash, 0);
PVS-StudioèŠåïŒ
V575 ãmemsetã颿°ã¯ã0ãèŠçŽ ãåŠçããŸãã 3çªç®ã®åŒæ°ã調ã¹ãŸãã PluginUpdater dlgupdate.cpp 652
2çªç®ã®åŒæ°ããŒãã§ããããã颿°ã¯äœããªã»ããããŸããã å¥ã®ãã®ãããªééã£ãåŒã³åºãïŒshlipc.cpp 68ã
å確èªïŒ
LONG_PTR CALLBACK HotkeyHandlerDlgProc(....) { .... if (job->hContact && job->iAcksNeeded && job->hContact && job->iStatus == SendQueue::SQ_INPROGRESS) .... }
PVS-StudioèŠåïŒ
V501 ã&&ãæŒç®åã®å·ŠåŽãšå³åŽã«åäžã®å¯æ¬¡åŒãjob-> hContactãããããŸãã TabSRMM hotkeyhandler.cpp 523
'job-> hContact'ã®2çªç®ã®ãã§ãã¯ã¯åã«äžèŠã§ãããåé€ã§ããããã«æããŸãã ããã§ãããã®å Žæãšãããã確èªããããšããå§ãããŸãã
- ekhtml_mktables.c 67
- affixmgr.cxx 1784
- affixmgr.cxx 1879
- ac.c 889
ããã«ãªãœãŒã¹ãªãªãŒã¹ïŒ
static INT_PTR ServiceCreateMergedFlagIcon(....) { HRGN hrgn; .... if (hrgn!=NULL) { SelectClipRgn(hdc,hrgn); DeleteObject(hrgn); .... DeleteObject(hrgn); } .... }
PVS-StudioèŠåïŒ
V586åããªãœãŒã¹ã®å²ãåœãŠãè§£é€ããããã«ã 'DeleteObject'颿°ã2ååŒã³åºãããŸãã è¡ã確èªããŠãã ããïŒ264ã273ãUInfoEx svc_flagsicons.cpp 273
èšäºã«å«ãŸããŠããªããã®
ç§ã«ã¯ããåããããŸããã ç§ã¯ããŸãã«ãæ describeã ã£ãã®ã§ãããŸãéèŠã§ã¯ãããŸããã ããŠãäŸãã°ããã®ããã«ïŒ
#define MF_BYCOMMAND 0x00000000L void CMenuBar::updateState(const HMENU hMenu) const { .... ::CheckMenuItem(hMenu, ID_VIEW_SHOWAVATAR, MF_BYCOMMAND | dat->bShowAvatar ? MF_CHECKED : MF_UNCHECKED); .... }
ãã®ã³ãŒãã¯ãããã°ã©ããŒã瀺åããããã«ã¯æ©èœããŸããã ããããããã§ããããã¯æ£ããæ©èœããŸãã
äžé
æŒç®åã®æ¡ä»¶ã¯ïŒdat-> bShowAvatarïŒã§ã¯ãªããåŒïŒMF_BYCOMMAND | dat-> bShowAvatarïŒã§ãã 幞éãªããšã«ã宿°MF_BYCOMMANDã¯ãŒãã«çãããçµæã«ã¯åœ±é¿ããŸããã
ãããŠäžè¬çã«ãç§ã¯èšºæãæ³šææ·±ãèŠãŸããã§ããã ããã«ãåé¡ãªã倧ããªèšäºãæžãã®ã«ååã§ãããç¹ã«ããèŠãããšãã§ããªãããšã«æ°ä»ããŸããã
ãããã£ãŠããã®èšäºãè¡åã®æéãšèŠãªããªãã§ãã ããã PVS-Studioã¢ãã©ã€ã¶ãŒã®åšåãååã«å®£äŒããŠããŸãããPVS-Studioã¢ãã©ã€ã¶ãŒã§èª¬æãããŠãããšã©ãŒãä¿®æ£ãããããèœã¡çãããã®ã¯éåžžã«è¡šé¢çã§ãã éçºè
ã¯PVS-Studioãèªåã§èµ·åãããã¹ãŠã®èŠåãæ³šææ·±ãæ€èšããããšããå§ãããŸãã
ãããã«
éçã³ãŒãåæãã©ãã»ã©åœ¹ç«ã€ããããäžåºŠç€ºãããšãã§ãããšæããŸãã 1åéãã®ãã§ãã¯ã§ãå€ãã®ãšã©ãŒãæããã«ãªããŸãããããã¯éçã¢ãã©ã€ã¶ãŒã䜿çšããå Žåã®èª€ã£ãã·ããªãªã§ãã
åæã¯å®æçã«å®è¡ããå¿
èŠãããããã®åŸãå€ãã®ãšã©ãŒãæãæ©ã段éã§çºèŠãããŸãã ããã«ãããæ€çŽ¢ãšåé€ã«ãããæéã倧å¹
ã«ççž®ãããŸãã
PVS-Studioãããã«
ããŠã³ããŒãããŠããããžã§ã¯ãã§è©ŠããŠã¿ãŠãã ããã
ãã®èšäºã¯è±èªã§ãã
ãã®èšäºãè±èªåã®èŽè¡ãšå
±æãããå Žåã¯ã翻蚳ãžã®ãªã³ã¯ã䜿çšããŠãã ããïŒAndrey Karpovã
ãã¯ã€ã«ããã€ã³ã¿ãŒãè³ãç²åŸãããã©ã³ãNGãããžã§ã¯ãïŒããŒã2ïŒ