VirtualBox

Changeset 53051 in vbox


Ignore:
Timestamp:
Oct 13, 2014 7:46:51 PM (10 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
96546
Message:

supR3HardenedMonitor_LdrLoadDll: Merged the name mapping log statement into the one before the actually loading, i.e. after we've checked whether to be quiet or not.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostDrivers/Support/win/SUPR3HardenedMain-win.cpp

    r53045 r53051  
    17241724supR3HardenedMonitor_LdrLoadDll(PWSTR pwszSearchPath, PULONG pfFlags, PUNICODE_STRING pName, PHANDLE phMod)
    17251725{
    1726     DWORD    dwSavedLastError = RtlGetLastWin32Error();
    1727     bool     fQuiet = false;
    1728     NTSTATUS rcNt;
     1726    DWORD                   dwSavedLastError = RtlGetLastWin32Error();
     1727    PUNICODE_STRING const   pOrgName = pName;
     1728    NTSTATUS                rcNt;
    17291729
    17301730    /*
     
    17711771     * Absolute path?
    17721772     */
     1773    NTSTATUS        rcNtResolve     = STATUS_SUCCESS;
    17731774    bool            fSkipValidation = false;
    17741775    WCHAR           wszPath[260];
     
    17871788       )
    17881789    {
    1789         rcNt = RtlDosApplyFileIsolationRedirection_Ustr(1 /*fFlags*/,
    1790                                                         pName,
    1791                                                         (PUNICODE_STRING)&s_DefaultSuffix,
    1792                                                         &UniStrStatic,
    1793                                                         &UniStrDynamic,
    1794                                                         &pUniStrResult,
    1795                                                         NULL /*pNewFlags*/,
    1796                                                         NULL /*pcbFilename*/,
    1797                                                         NULL /*pcbNeeded*/);
    1798         if (NT_SUCCESS(rcNt))
     1790        rcNtResolve = RtlDosApplyFileIsolationRedirection_Ustr(1 /*fFlags*/,
     1791                                                               pName,
     1792                                                               (PUNICODE_STRING)&s_DefaultSuffix,
     1793                                                               &UniStrStatic,
     1794                                                               &UniStrDynamic,
     1795                                                               &pUniStrResult,
     1796                                                               NULL /*pNewFlags*/,
     1797                                                               NULL /*pcbFilename*/,
     1798                                                               NULL /*pcbNeeded*/);
     1799        if (NT_SUCCESS(rcNtResolve))
    17991800        {
    18001801            UINT cwc;
     
    18831884         */
    18841885        UINT cwc;
    1885         rcNt = RtlDosApplyFileIsolationRedirection_Ustr(1 /*fFlags*/,
    1886                                                         pName,
    1887                                                         (PUNICODE_STRING)&s_DefaultSuffix,
    1888                                                         &UniStrStatic,
    1889                                                         &UniStrDynamic,
    1890                                                         &pUniStrResult,
    1891                                                         NULL /*pNewFlags*/,
    1892                                                         NULL /*pcbFilename*/,
    1893                                                         NULL /*pcbNeeded*/);
    1894         if (NT_SUCCESS(rcNt))
     1886        rcNtResolve = RtlDosApplyFileIsolationRedirection_Ustr(1 /*fFlags*/,
     1887                                                               pName,
     1888                                                               (PUNICODE_STRING)&s_DefaultSuffix,
     1889                                                               &UniStrStatic,
     1890                                                               &UniStrDynamic,
     1891                                                               &pUniStrResult,
     1892                                                               NULL /*pNewFlags*/,
     1893                                                               NULL /*pcbFilename*/,
     1894                                                               NULL /*pcbNeeded*/);
     1895        if (NT_SUCCESS(rcNtResolve))
    18951896        {
    18961897            rcNt = supR3HardenedCopyRedirectionResult(wszPath, RT_ELEMENTS(wszPath), pUniStrResult, pName, &cwc);
     
    19351936        ResolvedName.Length = (USHORT)(cwc * sizeof(WCHAR));
    19361937        ResolvedName.MaximumLength = ResolvedName.Length + sizeof(WCHAR);
    1937 
    1938 /** @todo need to cache the translation so we can get at fQuiet here! */
    1939         SUP_DPRINTF(("supR3HardenedMonitor_LdrLoadDll: '%.*ls' -> '%.*ls' [rcNt=%#x]\n",
    1940                      (unsigned)pName->Length / sizeof(WCHAR), pName->Buffer,
    1941                      ResolvedName.Length / sizeof(WCHAR), ResolvedName.Buffer, rcNt));
    19421938        pName = &ResolvedName;
    19431939    }
    19441940
     1941    bool fQuiet = false;
    19451942    if (!fSkipValidation)
    19461943    {
     
    19921989                if (!fQuiet)
    19931990                {
    1994                     supR3HardenedError(VINF_SUCCESS, false, "supR3HardenedMonitor_LdrLoadDll: rejecting '%ls': rcNt=%#x\n",
    1995                                        wszPath, rcNt);
     1991                    if (pOrgName != pName)
     1992                        supR3HardenedError(VINF_SUCCESS, false, "supR3HardenedMonitor_LdrLoadDll: rejecting '%ls': rcNt=%#x\n",
     1993                                           wszPath, rcNt);
     1994                    else
     1995                        supR3HardenedError(VINF_SUCCESS, false, "supR3HardenedMonitor_LdrLoadDll: rejecting '%ls' (%.*ls): rcNt=%#x\n",
     1996                                           wszPath, pOrgName->Length / sizeof(WCHAR), pOrgName->Buffer, rcNt);
    19961997                    SUP_DPRINTF(("supR3HardenedMonitor_LdrLoadDll: returns rcNt=%#x '%ls'\n", rcNt, wszPath));
    19971998                }
     
    20052006        {
    20062007            DWORD dwErr = RtlGetLastWin32Error();
    2007             SUP_DPRINTF(("supR3HardenedMonitor_LdrLoadDll: error opening '%ls': %u (NtPath=%.*ls)\n",
    2008                          wszPath, dwErr, NtPathUniStr.Length / sizeof(RTUTF16), NtPathUniStr.Buffer));
     2008            SUP_DPRINTF(("supR3HardenedMonitor_LdrLoadDll: error opening '%ls': %u (NtPath=%.*ls; Input=%.*ls)\n",
     2009                         wszPath, dwErr, NtPathUniStr.Length / sizeof(RTUTF16), NtPathUniStr.Buffer,
     2010                         pOrgName->Length / sizeof(WCHAR), pOrgName->Buffer));
    20092011        }
    20102012        RTNtPathFree(&NtPathUniStr, &hRootDir);
     
    20152017     */
    20162018    if (!fQuiet)
    2017         SUP_DPRINTF(("supR3HardenedMonitor_LdrLoadDll: pName=%.*ls *pfFlags=%#x pwszSearchPath=%p:%ls [calling]\n",
    2018                      (unsigned)pName->Length / sizeof(WCHAR), pName->Buffer, pfFlags ? *pfFlags : UINT32_MAX, pwszSearchPath,
    2019                      !((uintptr_t)pwszSearchPath & 1) && (uintptr_t)pwszSearchPath >= 0x2000U ? pwszSearchPath : L"<flags>"));
     2019    {
     2020        if (pOrgName != pName)
     2021            SUP_DPRINTF(("supR3HardenedMonitor_LdrLoadDll: pName=%.*ls (Input=%.*ls, rcNtResolve=%#x) *pfFlags=%#x pwszSearchPath=%p:%ls [calling]\n",
     2022                         (unsigned)pName->Length / sizeof(WCHAR), pName->Buffer,
     2023                         (unsigned)pOrgName->Length / sizeof(WCHAR), pOrgName->Buffer, rcNtResolve,
     2024                         pfFlags ? *pfFlags : UINT32_MAX, pwszSearchPath,
     2025                         !((uintptr_t)pwszSearchPath & 1) && (uintptr_t)pwszSearchPath >= 0x2000U ? pwszSearchPath : L"<flags>"));
     2026        else
     2027            SUP_DPRINTF(("supR3HardenedMonitor_LdrLoadDll: pName=%.*ls (rcNtResolve=%#x) *pfFlags=%#x pwszSearchPath=%p:%ls [calling]\n",
     2028                         (unsigned)pName->Length / sizeof(WCHAR), pName->Buffer, rcNtResolve,
     2029                         pfFlags ? *pfFlags : UINT32_MAX, pwszSearchPath,
     2030                         !((uintptr_t)pwszSearchPath & 1) && (uintptr_t)pwszSearchPath >= 0x2000U ? pwszSearchPath : L"<flags>"));
     2031    }
     2032
    20202033    RtlRestoreLastWin32Error(dwSavedLastError);
    20212034    rcNt = g_pfnLdrLoadDllReal(pwszSearchPath, pfFlags, pName, phMod);
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette