• Denis Efremov's avatar
    floppy: fix out-of-bounds read in next_valid_format · 5635f897
    Denis Efremov authored
    
    
    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: default avatarDenis Efremov <efremov@ispras.ru>
    Tested-by: default avatarWilly Tarreau <w@1wt.eu>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    5635f897
floppy.c 127 KB