Skip to content
  • John Hawthorn's avatar
    eb52904e
    Always reject files external to app · eb52904e
    John Hawthorn authored
    Previously, when using `render file:`, it was possible to render files
    not only at an absolute path or relative to the current directory, but
    relative to ANY view paths. This was probably done for absolutely
    maximum compatibility when addressing CVE-2016-0752, but I think is
    unlikely to be used in practice.
    
    Tihs commit removes the ability to `render file:` with a path relative
    to a non-fallback view path.
    
    Make FallbackResolver.new private
    
    To ensure nobody is making FallbackResolvers other than "/" and "".
    
    Make reject_files_external_... no-op for fallbacks
    
    Because there are only two values used for path: "" and "/", and
    File.join("", "") == File.join("/", "") == "/", this method was only
    testing that the absolute paths started at "/" (which of course all do).
    
    This commit doesn't change any behaviour, but it makes it explicit that
    the FallbackFileSystemResolver works this way.
    
    Remove outside_app_allowed argument
    
    Deprecate find_all_anywhere
    
    This is now equivalent to find_all
    
    Remove outside_app argument
    
    Deprecate find_file for find
    
    Both LookupContext#find_file and PathSet#find_file are now equivalent to
    their respective #find methods.
    eb52904e
    Always reject files external to app
    John Hawthorn authored
    Previously, when using `render file:`, it was possible to render files
    not only at an absolute path or relative to the current directory, but
    relative to ANY view paths. This was probably done for absolutely
    maximum compatibility when addressing CVE-2016-0752, but I think is
    unlikely to be used in practice.
    
    Tihs commit removes the ability to `render file:` with a path relative
    to a non-fallback view path.
    
    Make FallbackResolver.new private
    
    To ensure nobody is making FallbackResolvers other than "/" and "".
    
    Make reject_files_external_... no-op for fallbacks
    
    Because there are only two values used for path: "" and "/", and
    File.join("", "") == File.join("/", "") == "/", this method was only
    testing that the absolute paths started at "/" (which of course all do).
    
    This commit doesn't change any behaviour, but it makes it explicit that
    the FallbackFileSystemResolver works this way.
    
    Remove outside_app_allowed argument
    
    Deprecate find_all_anywhere
    
    This is now equivalent to find_all
    
    Remove outside_app argument
    
    Deprecate find_file for find
    
    Both LookupContext#find_file and PathSet#find_file are now equivalent to
    their respective #find methods.
Loading