VirtualBox

Ignore:
Timestamp:
Apr 8, 2024 10:18:11 AM (8 months ago)
Author:
vboxsync
Message:

Devices/Storage/VSCSI: Be more strict when it comes to CDB lengths for individual commands, bugref:10613

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Storage/VSCSI/VSCSILunMmc.cpp

    r103902 r104221  
    17751775
    17761776
     1777/**
     1778 * The supported operation codes for the SBC LUN type.
     1779 *
     1780 * @note This gives the minimum size required by our implementation
     1781 *       which may be smaller than what the spec defines (for example
     1782 *       we do not access the control byte at the end).
     1783 */
     1784static uint8_t s_acbCdbOpc[] =
     1785{
     1786    1,                               /**< 0x00        TEST UNIT READY */
     1787    VSCSI_LUN_CDB_SZ_INVALID,        /**< 0x01        Invalid */
     1788    VSCSI_LUN_CDB_SZ_INVALID_X2,     /**< 0x02 - 0x03 Invalid */
     1789    VSCSI_LUN_CDB_SZ_INVALID_X4,     /**< 0x04 - 0x07 Invalid */
     1790    5,                               /**< 0x08        READ (6) */
     1791    VSCSI_LUN_CDB_SZ_INVALID,        /**< 0x09        Invalid */
     1792    VSCSI_LUN_CDB_SZ_INVALID_X2,     /**< 0x0a - 0x0b Invalid */
     1793    VSCSI_LUN_CDB_SZ_INVALID_X4,     /**< 0x0c - 0x0f Invalid */
     1794
     1795    VSCSI_LUN_CDB_SZ_INVALID_X2,     /**< 0x10 - 0x11 Invalid */
     1796    5,                               /**< 0x12        INQUIRY */
     1797    VSCSI_LUN_CDB_SZ_INVALID,        /**< 0x13        Invalid */
     1798    VSCSI_LUN_CDB_SZ_INVALID,        /**< 0x14        Invalid */
     1799    5,                               /**< 0x15        MODE SELECT (6) */
     1800    VSCSI_LUN_CDB_SZ_INVALID_X2,     /**< 0x16 - 0x17 Invalid */
     1801    VSCSI_LUN_CDB_SZ_INVALID_X2,     /**< 0x18 - 0x19 Invalid */
     1802    5,                               /**< 0x1a        MODE SENSE (6) */
     1803    5,                               /**< 0x1b        START STOP UNIT */
     1804    VSCSI_LUN_CDB_SZ_INVALID_X2,     /**< 0x1c - 0x1d Invalid */
     1805    5,                               /**< 0x1e        PREVENT ALLOW MEDIUM REMOVAL */
     1806    VSCSI_LUN_CDB_SZ_INVALID,        /**< 0x1f        Invalid */
     1807
     1808    VSCSI_LUN_CDB_SZ_INVALID_X4,     /**< 0x20 - 0x23 Invalid */
     1809    VSCSI_LUN_CDB_SZ_INVALID,        /**< 0x24        Invalid */
     1810    1,                               /**< 0x25        READ CAPACITY */
     1811    VSCSI_LUN_CDB_SZ_INVALID_X2,     /**< 0x26 - 0x27 Invalid */
     1812    9,                               /**< 0x28        READ (10) */
     1813    VSCSI_LUN_CDB_SZ_INVALID_X2,     /**< 0x29 - 0x2a Invalid */
     1814    6,                               /**< 0x2b        SEEK (10) */
     1815    VSCSI_LUN_CDB_SZ_INVALID_X2,     /**< 0x2c - 0x2d Invalid */
     1816    VSCSI_LUN_CDB_SZ_INVALID,        /**< 0x2e        Invalid */
     1817    5,                               /**< 0x2f        VERIFY (10) */
     1818
     1819    VSCSI_LUN_CDB_SZ_INVALID_X8,     /**< 0x30 - 0x37 Invalid */
     1820    VSCSI_LUN_CDB_SZ_INVALID_X4,     /**< 0x38 - 0x3b Invalid */
     1821    8,                               /**< 0x3c        READ BUFFER */
     1822    VSCSI_LUN_CDB_SZ_INVALID,        /**< 0x3d        Invalid */
     1823    VSCSI_LUN_CDB_SZ_INVALID_X2,     /**< 0x3e - 0x3f Invalid */
     1824
     1825    VSCSI_LUN_CDB_SZ_INVALID_X2,     /**< 0x40 - 0x41 Invalid */
     1826    VSCSI_LUN_CDB_SZ_INVALID,        /**< 0x42        Invalid */
     1827    9,                               /**< 0x43        READ TOC PMA ATIP */
     1828    VSCSI_LUN_CDB_SZ_INVALID_X2,     /**< 0x44 - 0x45 Invalid */
     1829    9,                               /**< 0x46        GET CONFIGURATION */
     1830    VSCSI_LUN_CDB_SZ_INVALID,        /**< 0x47        Invalid */
     1831    VSCSI_LUN_CDB_SZ_INVALID_X2,     /**< 0x48 - 0x49 Invalid */
     1832    9,                               /**< 0x4a        GET EVENT STATUS NOTIFICATION */
     1833    VSCSI_LUN_CDB_SZ_INVALID,        /**< 0x4b        Invalid */
     1834    VSCSI_LUN_CDB_SZ_INVALID,        /**< 0x4c        Invalid */
     1835    9,                               /**< 0x4d        LOG SENSE */
     1836    VSCSI_LUN_CDB_SZ_INVALID_X2,     /**< 0x4e - 0x4f Invalid */
     1837
     1838    VSCSI_LUN_CDB_SZ_INVALID,        /**< 0x50        Invalid */
     1839    9,                               /**< 0x51        READ DISC INFORMATION */
     1840    9,                               /**< 0x52        READ TRACK INFORMATION */
     1841    VSCSI_LUN_CDB_SZ_INVALID,        /**< 0x53        Invalid */
     1842    VSCSI_LUN_CDB_SZ_INVALID_X4,     /**< 0x54 - 0x57 Invalid */
     1843    VSCSI_LUN_CDB_SZ_INVALID_X2,     /**< 0x58 - 0x59 Invalid */
     1844    9,                               /**< 0x5a        MODE SENSE (10) */
     1845    VSCSI_LUN_CDB_SZ_INVALID,        /**< 0x5b        Invalid */
     1846    VSCSI_LUN_CDB_SZ_INVALID_X4,     /**< 0x5c - 0x5f Invalid */
     1847
     1848    VSCSI_LUN_CDB_SZ_INVALID_X16,    /**< 0x60 - 0x6f Invalid */
     1849    VSCSI_LUN_CDB_SZ_INVALID_X16,    /**< 0x70 - 0x7f Invalid */
     1850
     1851    VSCSI_LUN_CDB_SZ_INVALID_X8,     /**< 0x80 - 0x87 Invalid */
     1852    14,                              /**< 0x88        READ (16) */
     1853    VSCSI_LUN_CDB_SZ_INVALID,        /**< 0x89        Invalid */
     1854    VSCSI_LUN_CDB_SZ_INVALID_X2,     /**< 0x8a - 0x8b Invalid */
     1855    VSCSI_LUN_CDB_SZ_INVALID_X4,     /**< 0x8c - 0x8f Invalid */
     1856
     1857    VSCSI_LUN_CDB_SZ_INVALID_X8,     /**< 0x90 - 0x97 Invalid */
     1858    VSCSI_LUN_CDB_SZ_INVALID_X4,     /**< 0x98 - 0x9b Invalid */
     1859    VSCSI_LUN_CDB_SZ_INVALID_X2,     /**< 0x9c - 0x9d Invalid */
     1860    2,                               /**< 0x9e        SERVICE ACTION IN (16) (at least 2). */
     1861    VSCSI_LUN_CDB_SZ_INVALID,        /**< 0x9f        Invalid */
     1862
     1863    VSCSI_LUN_CDB_SZ_INVALID_X8,     /**< 0xa0 - 0xa7 Invalid */
     1864    10,                              /**< 0xa8        READ (12) */
     1865    VSCSI_LUN_CDB_SZ_INVALID,        /**< 0xa9        Invalid */
     1866    VSCSI_LUN_CDB_SZ_INVALID_X2,     /**< 0xaa - 0xab Invalid */
     1867    VSCSI_LUN_CDB_SZ_INVALID,        /**< 0xac        Invalid */
     1868    10,                              /**< 0xad        READ DVD STRUCTURE */
     1869    VSCSI_LUN_CDB_SZ_INVALID_X2,     /**< 0xae - 0xaf Invalid */
     1870
     1871    VSCSI_LUN_CDB_SZ_INVALID_X8,     /**< 0xb0 - 0xb7 Invalid */
     1872    VSCSI_LUN_CDB_SZ_INVALID_X4,     /**< 0xb8 - 0xbb Invalid */
     1873    VSCSI_LUN_CDB_SZ_INVALID,        /**< 0xbc        Invalid */
     1874    10,                              /**< 0xbd        MECHANISM STATUS */
     1875    10,                              /**< 0xbe        READ CD */
     1876    VSCSI_LUN_CDB_SZ_INVALID,        /**< 0xbf        Invalid */
     1877
     1878    VSCSI_LUN_CDB_SZ_INVALID_X16,    /**< 0xc0 - 0xcf Invalid */
     1879    VSCSI_LUN_CDB_SZ_INVALID_X16,    /**< 0xd0 - 0xdf Invalid */
     1880    VSCSI_LUN_CDB_SZ_INVALID_X16,    /**< 0xe0 - 0xef Invalid */
     1881    VSCSI_LUN_CDB_SZ_INVALID_X16     /**< 0xf0 - 0xff Invalid */
     1882};
     1883AssertCompileSize(s_acbCdbOpc, 256 * sizeof(uint8_t));
     1884
     1885
    17771886VSCSILUNDESC g_VScsiLunTypeMmc =
    17781887{
     
    17831892    /** cbLun */
    17841893    sizeof(VSCSILUNMMC),
     1894    /** pacbCdbOpc */
     1895    &s_acbCdbOpc[0],
    17851896    /** cSupOpcInfo */
    17861897    0,
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