• Matt Fleming's avatar
    efivarfs: Validate filenames much more aggressively · 47f531e8
    Matt Fleming authored
    The only thing that efivarfs does to enforce a valid filename is
    ensure that the name isn't too short. We need to strongly sanitise any
    filenames, not least because variable creation is delayed until
    efivarfs_file_write(), which means we can't rely on the firmware to
    inform us of an invalid name, because if the file is never written to
    we'll never know it's invalid.
    
    Perform a couple of steps before agreeing to create a new file,
    
      * hex_to_bin() returns a value indicating whether or not it was able
        to convert its arguments to a binary representation - we should
        check it.
    
      * Ensure that the GUID portion of the filename is the correct length
        and format.
    
      * The variable name portion of the filename needs to be at least one
        character in size.
    Reported-by: default avatarLingzhu Xiang <lxiang@redhat.com>
    Cc: Matthew Garrett <mjg59@srcf.ucam.org>
    Cc: Jeremy Kerr <jeremy.kerr@canonical.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: default avatarMatt Fleming <matt.fleming@intel.com>
    47f531e8
efivars.c 46 KB