• Mark Fasheh's avatar
    Btrfs: Null terminate strings passed in from userspace · 5516e595
    Mark Fasheh authored
    The 'char name[BTRFS_PATH_NAME_MAX]' member of struct btrfs_ioctl_vol_args
    is passed directly to strlen() after being copied from user. I haven't
    verified this, but in theory a userspace program could pass in an
    unterminated string and cause a kernel crash as strlen walks off the end of
    the array.
    
    This patch terminates the ->name string in all btrfs ioctl functions which
    currently use a 'struct btrfs_ioctl_vol_args'. Since the string is now
    properly terminated, it's length will never be longer than
    BTRFS_PATH_NAME_MAX so that error check has been removed.
    
    By the way, it might be better overall to just have the ioctl pass an
    unterminated string + length structure but I didn't bother with that since
    it'd change the kernel/user interface.
    Signed-off-by: default avatarMark Fasheh <mfasheh@suse.com>
    Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
    5516e595
ioctl.c 18.3 KB