bb86770 OvmfPkg/VirtioFsDxe: add helper for appending and sanitizing paths

Authored and Committed by lersek 3 years ago
    OvmfPkg/VirtioFsDxe: add helper for appending and sanitizing paths
    
    EFI_FILE_PROTOCOL.Open() -- for opening files -- and
    EFI_FILE_PROTOCOL.SetInfo() --  for renaming files -- will require us to
    append a relative UEFI pathname to an absolute base pathname. In turn,
    components of the resultant pathnames will have to be sent to virtiofsd,
    which does not consume UEFI-style pathnames.
    
    We're going to maintain the base pathnames in canonical POSIX format:
    - absolute (starts with "/"),
    - dot (.) and dot-dot (..) components resolved/removed,
    - uses forward slashes,
    - sequences of slashes collapsed,
    - printable ASCII character set,
    - CHAR8 encoding,
    - no trailing slash except for the root directory itself,
    - length at most VIRTIO_FS_MAX_PATHNAME_LENGTH.
    
    Add a helper function that can append a UEFI pathname to such a base
    pathname, and produce the result in conformance with the same invariants.
    
    Cc: Ard Biesheuvel <ard.biesheuvel@arm.com>
    Cc: Jordan Justen <jordan.l.justen@intel.com>
    Cc: Philippe Mathieu-Daudé <philmd@redhat.com>
    Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3097
    Signed-off-by: Laszlo Ersek <lersek@redhat.com>
    
        
file modified
+474 -0