
ä»®æ³ãã·ã³ã¯ãããŸããŸãªããŒãºã«äœ¿çšãããŸãã ç§èªèº«ãæ°å¹ŽéVirtualBoxã䜿çšããŠãœãããŠã§ã¢ããã¹ãããããŸããŸãªLinuxãã£ã¹ããªãã¥ãŒã·ã§ã³ãç°¡åã«ç 究ããŠããŸãã å®éãé·æé䜿çšããåŸãæªå®çŸ©ã®åäœãå®æçã«çºçããããããªãŒãã³ãœãŒã¹ãããžã§ã¯ãã®ãã§ãã¯ã«çµéšã掻çšããOracle VM Virtual Boxã®ãœãŒã¹ã³ãŒããåæããããšã«ããŸããã
VirtualBoxã¯ãã¯ãã¹ãã©ãããã©ãŒã ã®ä»®æ³åã¢ããªã±ãŒã·ã§ã³ã§ãã ããã¯ã©ãããæå³ã§ããïŒ ãŸããWindowsãMacãLinuxãªã©ãå®è¡ããIntelãŸãã¯AMDããã»ããµãŒãæèŒããã³ã³ãã¥ãŒã¿ãŒã§åäœããŸãã 次ã«ãã³ã³ãã¥ãŒã¿ãŒã®æ©èœãæ¡åŒµãããè€æ°ã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§ïŒä»®æ³ãã·ã³å ã§ïŒåæã«äœæ¥ã§ããããã«ãªããŸãã
ãã®ãããžã§ã¯ãã¯åé¡é åãéåžžã«è±å¯ã§ããããšãå€æããããããšã©ãŒãå€ããå°ãªããæãããªå Žæã®ã¿ã説æãããããè³æã2ã€ã®èšäºã«åå²ããå¿ èŠããããŸãã
èšäºãžã®ã³ã¡ã³ãã®äžã§åœŒãã¯ããå°ããŸãïŒå®è¡æã®ãšã©ãŒã¯äœã«ã€ãªãããŸããïŒ ç§ãã¡ã®å€§éšåã¯ãæ€èšŒæžã¿ã®ãããžã§ã¯ãã䜿çšãããããã«ãããããããã°ããŸããã ãã®èšäºãæžããŠãããšããç§ã¯VirutalBoxã®éåžžã®äœ¿çšã«é¢ããåé¡ã«æè»ãããã£ãã å ã®ã³ã¡ã³ããæ®ãããšã決ããŸããããã³ã¡ã³ããå°ãçãããŸãããã³ã¡ã³ãããªãå Žåã¯ããã¡ã€ã«ããããŒããã³ã¡ã³ããè¿œå ããŸãã ã¿ããªã«ã°ãªãããèŠã€ããããŠãã ããã
Virtual Boxã¯ã PVS-Studio 5.19ã䜿çšããŠãã¹ããããŸããã Windowsã§ã®ã¢ã»ã³ããªã«ã¯kBuildã¢ã»ã³ããªã·ã¹ãã ã䜿çšããããããæ€èšŒã«ã¯ç¹å¥ãªãŠãŒãã£ãªãã£PVS-Studio Standaloneã䜿çšããŸãããããã«ã€ããŠã¯ã PVS-StudioãWindowsäžã®ãã«ãã·ã¹ãã ãšã³ã³ãã€ã©ããµããŒãããããã«ãªããŸããã ç°¡åã§ããã«äœ¿çšã§ããŸã ã
å€æ°ãšæååã®ã¿ã€ããã¹
V501 ã||ãã®å·Šå³ã«åäžã®ãµãåŒãpState-> fIgnoreTrailingWhiteãããããŸãã æŒç®åã scmdiff.cpp 238
typedef struct SCMDIFFSTATE { .... bool fIgnoreTrailingWhite; bool fIgnoreLeadingWhite; .... } SCMDIFFSTATE; /* Pointer to a diff state. */ typedef SCMDIFFSTATE *PSCMDIFFSTATE; /* Compare two lines */ DECLINLINE(bool) scmDiffCompare(PSCMDIFFSTATE pState, ....) { .... if (pState->fIgnoreTrailingWhite //<== || pState->fIgnoreTrailingWhite) //<== return scmDiffCompareSlow(....); .... }
ããããããpStateãæ§é ã®ãã§ãã¯æžã¿ãã£ãŒã«ãã®1ã€ã¯ãfIgnoreLeadingWhiteãã§ããå¿ èŠããããŸãã
V501åäžã®ãµãåŒããããŸã 'ïŒãã£ãŒã«ãïŒ "ãŠãŒã¶ãŒå"ïŒãToStringïŒïŒãIsEmptyïŒïŒ'ã®å·Šãšå³ã® '||' æŒç®åã uiwizardexportapp.cpp 177
/* @file * VBox frontends: Qt4 GUI ("VirtualBox") */ QString UIWizardExportApp::uri(bool fWithFile) const { .... case SunCloud: { ... QString uri("SunCloud://"); .... if (!field("username").toString().isEmpty() || //<== !field("username").toString().isEmpty()) //<== uri = QString("%1@").arg(uri); .... } case S3: { QString uri("S3://"); .... if (!field("username").toString().isEmpty() || !field("password").toString().isEmpty()) uri = QString("%1@").arg(uri); .... } .... }
switchïŒïŒæŒç®åã®é£æ¥ãã©ã³ãããå€æãããšãããããããŠãŒã¶ãŒåããšããã¹ã¯ãŒãããããã¯ãã§ãã
V519 ãwcLeftãå€æ°ã«ã¯ãé£ç¶ããŠ2åå€ãå²ãåœãŠãããŸãã ããããããã¯ééãã§ãã è¡ã確èªããŠãã ããïŒ472ã473ãsupr3hardenedmain-win.cpp 473
/* Verify string cache compare function. */ static bool supR3HardenedWinVerifyCacheIsMatch(....) { .... wcLeft = wcLeft != '/' ? RT_C_TO_LOWER(wcLeft) : '\\'; wcLeft = wcRight != '/' ? RT_C_TO_LOWER(wcRight) : '\\'; //<== if (wcLeft != wcRight) return false; .... }
æããã«ã2çªç®ã®å²ãåœãŠã¯å€æ° 'wcRight'ã§ãªããã°ãªããŸããã
V519 ãpci_conf [0xa0]ãå€æ°ã«ã¯ãé£ç¶ããŠ2åå€ãå²ãåœãŠãããŸãã ããããããã¯ééãã§ãã è¡ã確èªããŠãã ããïŒ806ã807ãdevpci.cpp 807
/* @file * DevPCI - PCI BUS Device. */ static void pciR3Piix3Reset(PIIX3State *d) { .... pci_conf[0x82] = 0x02; pci_conf[0xa0] = 0x08; //<== pci_conf[0xa0] = 0x08; //<== pci_conf[0xa2] = 0x00; pci_conf[0xa3] = 0x00; pci_conf[0xa4] = 0x00; pci_conf[0xa5] = 0x00; pci_conf[0xa6] = 0x00; pci_conf[0xa7] = 0x00; pci_conf[0xa8] = 0x0f; .... }
ãã®ãã©ã°ã¡ã³ãã¯ã³ããŒã¢ã³ãããŒã¹ããåå ã§ããå¯èœæ§ããããŸãã æè¯ã®å Žåãäœåãªè¡ããããŸãããææªã®å Žåãã€ã³ããã¯ã¹ã0xa1ãã«ããèŠçŽ ã®åæåã¯ã¹ããããããŸãã
V583 ãïŒïŒãæŒç®åã¯ãæ¡ä»¶åŒã«é¢ä¿ãªããåžžã«1ã€ã®åãå€ãè¿ããŸãïŒg_acDaysInMonthsLeap [pTime-> u8Month-1]ã time.cpp 453
static const uint8_t g_acDaysInMonths[12] = { /*Jan Feb Mar Arp May Jun Jul Aug Sep Oct Nov Dec */ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; static const uint8_t g_acDaysInMonthsLeap[12] = { /*Jan Feb Mar Arp May Jun Jul Aug Sep Oct Nov Dec */ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; static PRTTIME rtTimeNormalizeInternal(PRTTIME pTime) { .... unsigned cDaysInMonth = fLeapYear ? g_acDaysInMonthsLeap[pTime->u8Month - 1] //<== : g_acDaysInMonthsLeap[pTime->u8Month - 1]; //<== .... }
ã³ã¡ã³ãã¯ãããŸããã VirtualBoxã¯åžžã«ããã幎ã ãšããã ãã§ãã
V519 ãchãå€æ°ã«ã¯ãé£ç¶ããŠ2åå€ãå²ãåœãŠãããŸãã ããããããã¯ééãã§ãã è¡ã確èªããŠãã ããïŒ1135ã1136ãvboxcpp.cpp 1136
/* Skips white spaces, including escaped new-lines. */ static void vbcppProcessSkipWhiteAndEscapedEol(PSCMSTREAM pStrmInput) { .... if (ch == '\r' || ch == '\n') { .... } else if (RT_C_IS_SPACE(ch)) { ch = chPrev; //<== ch = ScmStreamGetCh(pStrmInput); //<== Assert(ch == chPrev); } else break; .... }
ä»£å ¥æŒç®åã®ãªãã©ã³ããéã§ãããåã®æåããã®å Žæã«æ ŒçŽããããšä»®å®ããããšã¯è«ççã§ãïŒ
chPrev = ch; ch = ScmStreamGetCh(pStrmInput); Assert(ch == chPrev);
è¡ã®1ã€ã®å€æ°ãããã€ãã®ç°ãªãå€ã«å²ãåœãŠãããšã¯å¿ ãããééãã§ã¯ãªãããšã«æ³šæããŠãã ãã-äœæè ã¯ãã°ã¯ãŒã以å€ã§éæ³ã䜿ãããšããããŸãïŒ
V519 ãpixelformatãå€æ°ã«ã¯ãå€ãé£ç¶ããŠ2åå²ãåœãŠãããŸãã ããããããã¯ééãã§ãã è¡ããã§ãã¯ïŒ686ã688ãrenderspu_wgl.c 688
/* Okay, we were loaded manually. Call the GDI functions. */ pixelformat = ChoosePixelFormat( hdc, ppfd ); /* doing this twice is normal Win32 magic */ pixelformat = ChoosePixelFormat( hdc, ppfd );
äžå®ã®æ¡ä»¶
V547åŒã¯åžžã«çã§ãã ããã§ã¯ãããããã&&ãæŒç®åã䜿çšããå¿ èŠããããŸãã vboxfboverlay.cpp 2259
/* @file * VBoxFBOverlay implementation int */ VBoxVHWAImage::reset(VHWACommandList * pCmdList) { .... if (pCmd->SurfInfo.PixelFormat.c.rgbBitCount != 32 || pCmd->SurfInfo.PixelFormat.c.rgbBitCount != 24) { AssertFailed(); pCmd->u.out.ErrInfo = -1; return VINF_SUCCESS; } .... }
æ¡ä»¶ã¯ãå€æ°ãpCmd-> SurfInfo.PixelFormat.c.rgbBitCountãã®ãã¹ãŠã®å€ã«åœãŠã¯ãŸããŸãããããããæŒç®åã&&ãã䜿çšããããå€æ°ã®ããããã«ã¿ã€ããã¹ãååšããå¿ èŠããããŸãã
V547åŒãuCurCode <uPrevCodeãã¯åžžã«falseã§ãã 笊å·ãªãã®åã®å€ã<0ã«ãªãããšã¯ãããŸãããdbgmoddwarf.cpp2887
/* Deals with a cache miss in rtDwarfAbbrev_Lookup. */ static PCRTDWARFABBREV rtDwarfAbbrev_LookupMiss(....) { .... uint32_t uPrevCode = 0; for (;;) { /* Read the 'header'. Skipping zero code bytes. */ uint32_t const uCurCode =rtDwarfCursor_GetULeb128AsU32(....); if (pRet && (uCurCode == 0 || uCurCode < uPrevCode)) //<== break; /* probably end of unit. */ .... } .... }
å€æ°ãuPrevCodeãã¯ãŒãã«åæåãããä»ã®ã©ãã§ãå€æŽãããŸããããããã£ãŠãæ¡ä»¶åŒãuCurCode <uPrevCodeãã¯åžžã«falseã«ãªããŸãã 笊å·ãªãã®æ°å€ã¯ãŒãããå°ãããªããŸããã
V534 ãforãæŒç®åå ã§ééã£ãå€æ°ãæ¯èŒãããŠããå¯èœæ§ããããŸãã ãiãã®æ€èšãæ€èšããŠãã ããã vboxdispd3d.cpp 4470
/* @file * VBoxVideo Display D3D User mode dll */ static HRESULT APIENTRY vboxWddmDDevCreateResource(....) { .... for (UINT i = 0; i < pResource->SurfCount; ++i) { .... if (SUCCEEDED(hr)) { .... } else { for (UINT j = 0; i < j; ++j) { .... } break; } } .... }
ãã¹ããããã«ãŒãã¯ãåäžã®å埩ãå®è¡ããŸããã ããããããšã©ãŒã®ç¶æ ã¯ãi <jãã§ãã ããããã圌ãã¯æ¬¡ã®ããã«æžãããã£ãã®ã§ããj <iã
V648 ã&&ãæäœã®åªå 床ã¯ã||ãã®åªå 床ãããé«ã æäœã drvacpi.cpp 132
/*Get the current power source of the host system. */ static DECLCALLBACK(int) drvACPIQueryPowerSource(....) { .... /* running on battery? */ if (powerStatus.ACLineStatus == 0 /* Offline */ || powerStatus.ACLineStatus == 255 /* Unknown */ && (powerStatus.BatteryFlag & 15)) { *pPowerSource = PDM_ACPI_POWER_SOURCE_BATTERY; } .... }
ãã®æ¡ä»¶ã¯å®æ°å€ãåããŸããããæäœã®åªå é äœã¯çãããããã«èŠããŸãã ãããããã||ãæŒç®åã§åŒãæ¬åŒ§ã§å²ãå¿ èŠããããŸãã
çŽãããããã¶ã€ã³
V640ã³ãŒãã®æäœããžãã¯ããã®ãã©ãŒãããã«å¯Ÿå¿ããŠããŸããã ã¹ããŒãã¡ã³ãã¯å³åŽã«ã€ã³ãã³ããããŸãããåžžã«å®è¡ãããŸãã äžæ¬åŒ§ãæ¬ èœããŠããå¯èœæ§ããããŸãã snapshotimpl.cpp 1649
/* Called by the Console when it's done saving the VM state into *the snapshot (if online) and reconfiguring the hard disks. */ STDMETHODIMP SessionMachine::EndTakingSnapshot(BOOL aSuccess) { .... if (fOnline) //no need to test for whether the saved state file is shared: //an online snapshot means that a new saved state file was //created, which we must clean up now RTFileDelete(mConsoleTaskData.mSnapshot->....); machineLock.acquire(); //<== mConsoleTaskData.mSnapshot->uninit(); machineLock.release(); .... }
ãã®ãã©ã°ã¡ã³ãå ã®ããã¹ãã®æžåŒèšå®ã¯ããmachineLock.acquireïŒïŒãé¢æ°ã®åŒã³åºããç¹å®ã®æ¡ä»¶äžã§ã®ã¿å®è¡ããå¿ èŠããããåžžã«ã§ã¯ãªãããšã瀺åããŠããŸãã
V640ã³ãŒãã®æäœããžãã¯ããã®ãã©ãŒãããã«å¯Ÿå¿ããŠããŸããã 2çªç®ã®ã¹ããŒãã¡ã³ãã¯åžžã«å®è¡ãããŸãã äžæ¬åŒ§ãæ¬ èœããŠããå¯èœæ§ããããŸãã vboxguestr3libdraganddrop.cpp 656
static int vbglR3DnDGHProcessRequestPendingMessage(....) { .... rc = Msg.hdr.result; if (RT_SUCCESS(rc)) rc = Msg.uScreenId.GetUInt32(puScreenId); AssertRC(rc); .... }
æå³ããããžãã¯ãåæ ããªããã©ãŒãããã®ããèŠèŠçãªäŸã
V561æ°ãã«å®£èšãããããã 'Status'å€æ°ã«å€ãå²ãåœãŠãæ¹ãããããè¯ãã§ãããã åã®å®£èšïŒvboxmpwddm.cppãè¡5723ãvboxmpwddm.cpp 5728
/* @file * VBox WDDM Miniport driver */ static NTSTATUS APIENTRY DxgkDdiRenderNew(CONST HANDLE hContext, DXGKARG_RENDER *pRender) { .... NTSTATUS Status = STATUS_SUCCESS; //<== __try { .... NTSTATUS Status = STATUS_SUCCESS; //<== .... } __except (EXCEPTION_EXECUTE_HANDLER) { Status = STATUS_INVALID_PARAMETER; WARN(("invalid parameter")); } return Status; }
ç¡é§ãªæ°ããããŒã«ã«å€æ° 'Status'ã宣èšãããŠããŸãã try..exceptã»ã¯ã·ã§ã³ã§å€æ°ãå€æŽããŠãæ»ãå€ã¯å€æŽããããå€éšïŒtry {}ãããã¯ã«é¢ããŠïŒå€æ°ã¯äŸå€ã®å Žåã«ã®ã¿å€æŽãããŸãã
V638æååå ã«ç«¯æ«ãã«ãååšããŸãã ã\ 0x01ãæåãèŠã€ãããŸããã ããããæå³ïŒ '\ x01'ã devsmc.cpp 129
/* @file * DevSMC - SMC device emulation. */ static struct AppleSMCData data[] = { {6, "REV ", "\0x01\0x13\0x0f\0x00\0x00\0x03"}, //<== {32,"OSK0", osk }, {32,"OSK1", osk+32 }, {1, "NATJ", "\0" }, {1, "MSSP", "\0" }, {1, "MSSD", "\0x3" }, //<== {1, "NTOK", "\0"}, {0, NULL, NULL } };
ã\ x01ãã®ããã«ããŒããªãã®æååã«16é²æåãæå®ããå¿ èŠããããŸããæå®ããªãå Žåãæåã\ 0ãã¯çµç«¯ãŒããšããŠè§£éãããŸãã
V543å€ 'true'ãHRESULTåã®å€æ° 'mRemoveSavedState'ã«å²ãåœãŠãããŠããã®ã¯å¥åŠã§ãã machineimpl.cpp 12247
class ATL_NO_VTABLE SessionMachine : public Machine { .... HRESULT mRemoveSavedState; .... } HRESULT SessionMachine::init(Machine *aMachine) { .... /* default is to delete saved state on * Saved -> PoweredOff transition */ mRemoveSavedState = true; .... } HRESULT SessionMachine::i_setMachineState(....) { .... if (mRemoveSavedState) { .... } .... }
HRESULTãštype boolã¯ãŸã£ããç°ãªãçš®é¡ã®æå³ã§ãã HRESULTã¯ããšã©ãŒã®é倧床ã³ãŒããããã€ã¹ã³ãŒãããšã©ãŒã³ãŒãã®3ã€ã®ç°ãªããã£ãŒã«ãã«åå²ããã32ãããå€ã§ãã HRESULTå€ãæäœããã«ã¯ãS_OKãE_FAILãE_ABORTãªã©ã®ç¹å¥ãªå®æ°ã䜿çšãããŸãã ãŸããHRESULTåã®å€ããã§ãã¯ããã«ã¯ãSUCCEEDEDãFAILEDãªã©ã®ãã¯ãã察象ã§ãã
HRESULTå€æ°ã䜿çšããåæ§ã®å ŽæïŒ
- V545ãã®ãããªãifãæŒç®åã®æ¡ä»¶åŒã¯ãHRESULTåã®å€ãmRemoveSavedStateãã«å¯ŸããŠæ£ãããããŸããã 代ããã«SUCCEEDEDãŸãã¯FAILEDãã¯ãã䜿çšããå¿ èŠããããŸãã machineimpl.cpp 14312
- V545ãã®ãããªãifãæŒç®åã®æ¡ä»¶åŒã¯ãHRESULTåã®å€ãprocCaller.rcïŒïŒãã«å¯ŸããŠæ£ãããããŸããã 代ããã«SUCCEEDEDãŸãã¯FAILEDãã¯ãã䜿çšããå¿ èŠããããŸãã guestsessionimpl.cpp 1981
- V545ãã®ãããªãifãæŒç®åã®æ¡ä»¶åŒã¯ãHRESULTåã®å€ãmachCaller.rcïŒïŒãã«å¯ŸããŠæ£ãããããŸããã 代ããã«SUCCEEDEDãŸãã¯FAILEDãã¯ãã䜿çšããå¿ èŠããããŸãã virtualboximpl.cpp 3079
æªå®çŸ©ã®åäœ
V567æªå®çŸ©ã®åäœã ãcurgãå€æ°ã¯ãã·ãŒã±ã³ã¹ãã€ã³ãéã§2å䜿çšãããŠããéã«å€æŽãããŸãã consoleevents.h 75
template<class C> class ConsoleEventBuffer { public: .... C get() { C c; if (full || curg != curp) { c = buf[curg]; ++curg %= sz; //<== full = false; } return c; } .... };
å€æ° 'cââurg'ã¯ãåãé£ç¶ç¹ã§2å䜿çšãããŸãã ãã®çµæããã®ãããªåŒã®çµæãäºæž¬ããããšã¯äžå¯èœã§ãã 詳现ã«ã€ããŠã¯ã蚺æV567ã®èª¬æãåç §ããŠãã ããã
åæ§ã®å ŽæïŒ
- V567æªå®çŸ©ã®åäœã 'curp'å€æ°ã¯ãã·ãŒã±ã³ã¹ãã€ã³ãéã§2å䜿çšãããŠããéã«å€æŽãããŸãã consoleevents.h 95
- V567æªå®çŸ©ã®åäœã 'curp'å€æ°ã¯ãã·ãŒã±ã³ã¹ãã€ã³ãéã§2å䜿çšãããŠããéã«å€æŽãããŸãã consoleevents.h 122
V614æœåšçã«åæåãããŠããªãå€æ°ãrcãã䜿çšãããŸããã suplib-win.cpp 367
/* Stops a possibly running service. */ static int suplibOsStopService(void) { /* Assume it didn't exist, so we'll create the service. */ int rc; SC_HANDLE hSMgr = OpenSCManager(....); .... if (hSMgr) { .... rc = VINF_SUCCESS; .... } return rc; }
å€æ°ãhSMgrãã®ã¹ããŒã¿ã¹ãæ£ãããªãå Žåãé¢æ°ã¯åæåãããŠããªãå€æ°ãrcããè¿ããŸãã
åæ§ã®å ŽæïŒ
- V614æœåšçã«åæåãããŠããªãå€æ°ãrcãã䜿çšãããŸããã suplib-win.cpp 416
V611ã¡ã¢ãªã¯ãmalloc / reallocãæ©èœã䜿çšããŠå²ãåœãŠãããŸãããããdeleteãæŒç®åã䜿çšããŠè§£æŸãããŸããã ãpBufferãå€æ°ã®èåŸã«ããæäœããžãã¯ã調ã¹ãããšãæ€èšããŠãã ããã tsmfhook.cpp 1261
/* @file * VBoxMMR - Multimedia Redirection */ void ReadTSMF(uint32_t u32ChannelHandle, uint32_t u32HGCMClientId, uint32_t u32SizeAvailable) { .... PBYTE pBuffer = (PBYTE)malloc(u32SizeAvailable + sizeof(....)); .... delete [] pBuffer; .... }
ãããã¡ã®ã¡ã¢ãªã¯ãäºææ§ã®ãªãæ¹æ³ã§å²ãåœãŠããã解æŸãããŸãã
ãšãŠãè¿·æãªå Žæ
V521 ãããæŒç®åã䜿çšãããã®ãããªåŒã¯å±éºã§ãã åŒãæ£ããããšã確èªããŠãã ããã applianceimplimport.cpp 3943
void Appliance::i_importMachines(....) { .... /* Iterate through all virtual systems of that appliance */ size_t i = 0; for (it = reader.m_llVirtualSystems.begin(), it1 = m->virtualSystemDescriptions.begin(); it != reader.m_llVirtualSystems.end(), //<== it1 != m->virtualSystemDescriptions.end(); ++it, ++it1, ++i) {....} .... }
ã©ããããããã°ã©ãã¯ããã«ã€ããŠèããã«ãŒãã®åŒæ°ã®éã«ã³ã³ããå ¥ãç¶ããŸããã ã³ã³ãæŒç®åã¯äž¡æ¹ã®åŒæ°ãèšç®ãã2çªç®ã®åŒæ°ãè¿ããŸãããããã£ãŠãããã§ã¯ã1ã€ã®æ¡ä»¶ãã«ãŒãã®åäœã«åœ±é¿ãäžããŸããã
V529å¥æ°ã»ãã³ãã³ ';' ãforãæŒç®åã®åŸã server_getshaders.c 92
/* @file * VBox OpenGL GLSL related get functions */ void SERVER_DISPATCH_APIENTRY crServerDispatchGetAttachedShaders(....) { .... for (i=0; i<*pLocal; ++i); //<== ids[i] = crStateGLSLShaderHWIDtoID(ids[i]); .... }
ãµã€ã¯ã«åŸã®ã»ãã³ãã³ã¯ãæ§æ³ãããããžãã¯ãå®å šã«å€æŽããŸããã æ³å®ãããã«ãŒãã®æ¬äœã¯å埩ã«é¢äžããŸããããã«ãŒãã®å®è¡åŸã«1åå®è¡ãããŸãã
V654ã«ãŒãã®æ¡ä»¶ã¯åžžã«çã§ãã suphardenedverifyprocess-win.cpp 1732
/* Opens a loader cache entry. */ DECLHIDDEN(int) supHardNtLdrCacheOpen(const char *pszName, ....) { .... uint32_t i = 0; while (i < RT_ELEMENTS(g_apszSupNtVpAllowedDlls)) if (!strcmp(pszName, g_apszSupNtVpAllowedDlls[i])) break; .... }
ãã®ã«ãŒãã®å±éºæ§ã¯ãã«ãŠã³ã¿ãŒã®å€ãå€ãããªãããšã§ãããããã£ãŠãé åã®æåã®èŠçŽ ããpszNameããšäžèŽããªãå Žåãã«ãŒãã¯æ°žé ã«ãªããŸãã
V606ææè ãªãããŒã¯ã³ '0'ã vboxmpvbva.cpp 997
/** @file * VBox WDDM Miniport driver */ VBOXCMDVBVA_HDR* VBoxCmdVbvaSubmitLock(....) { if (VBoxVBVAExGetSize(&pVbva->Vbva) < cbCmd) { WARN(("....")); NULL; //<== } if (!VBoxVBVAExBufferBeginUpdate(....) { WARN(("VBoxVBVAExBufferBeginUpdate failed!")); return NULL; } .... }
ãæ»ãããéããŸããã
V626ãã¹ããªã³ãã®ãã§ãã¯ãæ€èšããŠãã ããã ããããã;ãã«çœ®ãæããå¿ èŠãããå ŽåããããŸãã ldrmemory.cpp 317
/*@file *IPRT-Binary Image Loader, The Memory/Debugger Oriented Parts.*/ RTDECL(int) RTLdrOpenInMemory(....) { if (RT_SUCCESS(rc)) { .... } else pfnDtor(pvUser), //<== *phLdrMod = NIL_RTLDRMOD; }
ãã®æ¹æ³ã§èšå®ãããã³ã³ãã¯ããelseãã®äžã®æ¬¡ã®ã¹ããŒãã¡ã³ããåããŸãã ãããããããã¯èšç»ãããŠããªãã£ãã
ãããã«
VirtualBoxã®æ€èšŒèšäºãæ倧éã«æŽ»çšãããéçºè ããã¹ã¿ãŒããã®ä»ã®ã¢ã¯ãã£ããŠãŒã¶ãŒã«ãšã£ãŠãã®ãããªéèŠãªè£œåãå°ãè¯ããªãããšãé¡ã£ãŠããŸãã
éçåæãå®æçã«äœ¿çšããããšã§ããã䟿å©ãªã¿ã¹ã¯ã解決ããããã«å€ãã®æéãç¯çŽã§ããŸãã ãŸããã³ãŒãã®å質管çã¯ãããšãã°ãæ°ãããµãŒãã¹ã䜿çšããŠãC / C ++ã³ãŒãã®å®æçãªç£æ»ãªã©ãä»ã®ãµãŒãã¹ã«ç§»è¡ã§ããŸã ã
ãã®èšäºã¯è±èªã§ãã
è±èªã話ãèŽè¡ãšãã®èšäºãå ±æãããå Žåã¯ã翻蚳ãžã®ãªã³ã¯ã䜿çšããŠãã ããïŒSvyatoslav Razmyslovã Oracle VM VirtualBoxã®ç¢ºèªã ããŒã1 ã
èšäºãèªãã§è³ªåããããŸããïŒ
å€ãã®å Žåãèšäºã«ã¯åã質åãå¯ããããŸãã ããã§ãããã«å¯ŸããåçãåéããŸããïŒ PVS-Studioããã³CppCatããŒãžã§ã³2014ã«é¢ããèšäºã®èªè
ããã®è³ªåãžã®åç ã ãªã¹ããã芧ãã ããã