VirtualBox

Changeset 88743 in vbox for trunk/src/VBox/Devices


Ignore:
Timestamp:
Apr 28, 2021 11:14:43 AM (4 years ago)
Author:
vboxsync
Message:

DevVGA-SVGA: Log out of bounds values. bugref:9981

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Graphics/DevVGA-SVGA.cpp

    r88547 r88743  
    18891889        case SVGA_REG_WIDTH:
    18901890            STAM_REL_COUNTER_INC(&pThis->svga.StatRegWidthWr);
    1891             if (u32 <= pThis->svga.u32MaxWidth && u32 != pThis->svga.uWidth)
    1892             {
     1891            if (u32 != pThis->svga.uWidth)
     1892            {
     1893                if (u32 <= pThis->svga.u32MaxWidth)
     1894                {
    18931895#if defined(IN_RING3) || defined(IN_RING0)
    1894                 pThis->svga.uWidth = u32;
    1895                 vmsvgaHCUpdatePitch(pThis, pThisCC);
    1896                 if (pThis->svga.fEnabled)
    1897                     ASMAtomicOrU32(&pThis->svga.u32ActionFlags, VMSVGA_ACTION_CHANGEMODE);
     1896                    pThis->svga.uWidth = u32;
     1897                    vmsvgaHCUpdatePitch(pThis, pThisCC);
     1898                    if (pThis->svga.fEnabled)
     1899                        ASMAtomicOrU32(&pThis->svga.u32ActionFlags, VMSVGA_ACTION_CHANGEMODE);
    18981900#else
    1899                 rc = VINF_IOM_R3_IOPORT_WRITE;
     1901                    rc = VINF_IOM_R3_IOPORT_WRITE;
    19001902#endif
     1903                }
     1904                else
     1905                    Log(("SVGA_REG_WIDTH: New value is out of bounds: %u, max %u\n", u32, pThis->svga.u32MaxWidth));
    19011906            }
    19021907            /* else: nop */
     
    19051910        case SVGA_REG_HEIGHT:
    19061911            STAM_REL_COUNTER_INC(&pThis->svga.StatRegHeightWr);
    1907             if (u32 <= pThis->svga.u32MaxHeight && u32 != pThis->svga.uHeight)
    1908             {
    1909                 pThis->svga.uHeight = u32;
    1910                 if (pThis->svga.fEnabled)
    1911                     ASMAtomicOrU32(&pThis->svga.u32ActionFlags, VMSVGA_ACTION_CHANGEMODE);
     1912            if (u32 != pThis->svga.uHeight)
     1913            {
     1914                if (u32 <= pThis->svga.u32MaxHeight)
     1915                {
     1916                    pThis->svga.uHeight = u32;
     1917                    if (pThis->svga.fEnabled)
     1918                        ASMAtomicOrU32(&pThis->svga.u32ActionFlags, VMSVGA_ACTION_CHANGEMODE);
     1919                }
     1920                else
     1921                    Log(("SVGA_REG_HEIGHT: New value is out of bounds: %u, max %u\n", u32, pThis->svga.u32MaxHeight));
    19121922            }
    19131923            /* else: nop */
     
    19211931        case SVGA_REG_BITS_PER_PIXEL:      /* Current bpp in the guest */
    19221932            STAM_REL_COUNTER_INC(&pThis->svga.StatRegBitsPerPixelWr);
    1923             if (u32 <= 32 && pThis->svga.uBpp != u32)
    1924             {
     1933            if (pThis->svga.uBpp != u32)
     1934            {
     1935                if (u32 <= 32)
     1936                {
    19251937#if defined(IN_RING3) || defined(IN_RING0)
    1926                 pThis->svga.uBpp = u32;
    1927                 vmsvgaHCUpdatePitch(pThis, pThisCC);
    1928                 if (pThis->svga.fEnabled)
    1929                     ASMAtomicOrU32(&pThis->svga.u32ActionFlags, VMSVGA_ACTION_CHANGEMODE);
     1938                    pThis->svga.uBpp = u32;
     1939                    vmsvgaHCUpdatePitch(pThis, pThisCC);
     1940                    if (pThis->svga.fEnabled)
     1941                        ASMAtomicOrU32(&pThis->svga.u32ActionFlags, VMSVGA_ACTION_CHANGEMODE);
    19301942#else
    1931                 rc = VINF_IOM_R3_IOPORT_WRITE;
     1943                    rc = VINF_IOM_R3_IOPORT_WRITE;
    19321944#endif
     1945                }
     1946                else
     1947                    Log(("SVGA_REG_BITS_PER_PIXEL: New value is out of bounds: %u, max 32\n", u32));
    19331948            }
    19341949            /* else: nop */
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