• Denis Efremov's avatar
    floppy: fix invalid pointer dereference in drive_name · 9b04609b
    Denis Efremov authored
    This fixes the invalid pointer dereference in the drive_name function of
    the floppy driver.
    
    The native_format field of the struct floppy_drive_params is used as
    floppy_type array index in the drive_name function.  Thus, the field
    should be checked the same way as the autodetect field.
    
    To trigger the bug, one could use a value out of range and set the drive
    parameters with the FDSETDRVPRM ioctl.  Next, FDGETDRVTYP ioctl should
    be used to call the drive_name.  A floppy disk is not required to be
    inserted.
    
    CAP_SYS_ADMIN is required to call FDSETDRVPRM.
    
    The patch adds the check for a value of the native_format 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>
    9b04609b
floppy.c 127 KB