Skip to content
  • Pekka Paalanen's avatar
    connection: fix demarshal of invalid header · bace3cd8
    Pekka Paalanen authored
    The size argument to wl_connection_demarshal() is taken from the message by the
    caller wl_client_connection_data(), therefore 'size' is untrusted data
    controllable by a Wayland client. The size should always be at least the header
    size, otherwise the header is invalid.
    
    If the size is smaller than header size, it leads to reading past the end of
    allocated memory. Furthermore if size is zero, wl_closure_init() changes
    behaviour and leaves num_arrays uninitialized, leading to access of arbitrary
    memory.
    
    Check that 'size' fits at least the header. The space for arguments is already
    properly checked.
    
    This makes the request_bogus_size test free of errors under Valgrind.
    
    Fixes: wayland/wayland#52
    
    
    
    Signed-off-by: default avatarPekka Paalanen <pekka.paalanen@collabora.com>
    Reviewed-by: Simon Ser's avatarSimon Ser <contact@emersion.fr>
    bace3cd8