VirtualBox

Changeset 79370 in vbox for trunk/src/VBox/Runtime/r3/nt


Ignore:
Timestamp:
Jun 27, 2019 2:43:23 AM (5 years ago)
Author:
vboxsync
Message:

IPRT/direnum-r3-nt.cpp: Fixed enumerating directories we're not allowed to traverse (e.g. c:\windows\system32\com\dmp\) bugref:9320

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/r3/nt/direnum-r3-nt.cpp

    r79155 r79370  
    127127            fOptions |= FILE_OPEN_REPARSE_POINT;
    128128
     129        ACCESS_MASK fDesiredAccess = FILE_LIST_DIRECTORY | FILE_READ_ATTRIBUTES | FILE_TRAVERSE | SYNCHRONIZE;
    129130        for (;;)
    130131        {
    131132            if (pvNativeRelative == NULL)
    132133                rc = RTNtPathOpenDir(pDir->pszPath,
    133                                      FILE_LIST_DIRECTORY | FILE_READ_ATTRIBUTES | FILE_TRAVERSE | SYNCHRONIZE,
     134                                     fDesiredAccess,
    134135                                     FILE_SHARE_READ | FILE_SHARE_WRITE,
    135136                                     fOptions,
     
    145146                rc = RTNtPathOpenDirEx((HANDLE)hRelativeDir,
    146147                                       (struct _UNICODE_STRING *)pvNativeRelative,
    147                                        FILE_LIST_DIRECTORY | FILE_READ_ATTRIBUTES | FILE_TRAVERSE | SYNCHRONIZE,
     148                                       fDesiredAccess,
    148149                                       FILE_SHARE_READ | FILE_SHARE_WRITE,
    149150                                       fOptions,
     
    156157#endif
    157158                                       );
     159            if (   rc == VERR_ACCESS_DENIED             /* Seen with c:\windows\system32\com\dmp on w7 & w10 (admin mode). */
     160                && (fDesiredAccess & FILE_TRAVERSE))
     161            {
     162                fDesiredAccess &= ~FILE_TRAVERSE;
     163                continue;
     164            }
    158165            if (   !(fOptions & FILE_OPEN_REPARSE_POINT)
    159166                || (rc != VINF_SUCCESS && rc != VERR_INVALID_PARAMETER) )
Note: See TracChangeset for help on using the changeset viewer.

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