• D
    floppy: fix out-of-bounds read in next_valid_format · 5b565f32
    Denis Efremov 提交于
    [ Upstream commit 5635f897ed83fd539df78e98ba69ee91592f9bb8 ]
    
    This fixes a global out-of-bounds read access in the next_valid_format
    function of the floppy driver.
    
    The values from autodetect field of the struct floppy_drive_params are
    used as indices for the floppy_type array in the next_valid_format
    function 'floppy_type[DP->autodetect[probed_format]].sect'.
    
    To trigger the bug, one could use a value out of range and set the drive
    parameters with the FDSETDRVPRM ioctl.  A floppy disk is not required to
    be inserted.
    
    CAP_SYS_ADMIN is required to call FDSETDRVPRM.
    
    The patch adds the check for values of the autodetect field to be in the
    '0 <= x < ARRAY_SIZE(floppy_type)' range of the floppy_type array indices.
    
    The bug was found by syzkaller.
    Signed-off-by: NDenis Efremov <efremov@ispras.ru>
    Tested-by: NWilly Tarreau <w@1wt.eu>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: NSasha Levin <sashal@kernel.org>
    5b565f32
floppy.c 127.0 KB