VirtualBox

Changeset 103066 in vbox for trunk/src/VBox/Runtime/r0drv


Ignore:
Timestamp:
Jan 25, 2024 3:03:18 PM (14 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
161312
Message:

iprt: Prevent array-index-out-of-bounds UBSAN warnings on Linux, bugref:10585.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c

    r102874 r103066  
    426426            fContiguous = true;
    427427            for (iPage = 0; iPage < cPages; iPage++)
    428                 pMemLnx->apPages[iPage] = &paPages[iPage];
     428                *(pMemLnx->apPages + iPage) = &paPages[iPage];
    429429        }
    430430        else if (fContiguous)
     
    442442        for (iPage = 0; iPage < cPages; iPage++)
    443443        {
    444             pMemLnx->apPages[iPage] = alloc_page(fFlagsLnx | __GFP_NOWARN);
    445             if (RT_UNLIKELY(!pMemLnx->apPages[iPage]))
     444            *(pMemLnx->apPages + iPage) = alloc_page(fFlagsLnx | __GFP_NOWARN);
     445            if (RT_UNLIKELY(!*(pMemLnx->apPages + iPage)))
    446446            {
    447447                while (iPage-- > 0)
    448                     __free_page(pMemLnx->apPages[iPage]);
     448                    __free_page(*(pMemLnx->apPages + iPage));
    449449                rtR0MemObjDelete(&pMemLnx->Core);
    450450                return rcNoMem;
     
    623623        size_t iPage = pMemLnx->cPages;
    624624        while (iPage-- > 0)
    625             if (PageHighMem(pMemLnx->apPages[iPage]))
     625            if (PageHighMem(*(pMemLnx->apPages + iPage)))
    626626            {
    627627                fMustMap = true;
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