X-Git-Url: https://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fweb%2Fmedia_proxy%2Fmedia_proxy_controller.ex;h=1a09ac62a0245d74b80c2a0d65405355618a5ae5;hb=4db88242e52b00dc350b9a2ecaaea5b7ea7b21c6;hp=1e9520d462c36fc29da22698e87fc533db0f237b;hpb=ee5250ae56b5bc0989864420d8e76b0a2734630d;p=akkoma diff --git a/lib/pleroma/web/media_proxy/media_proxy_controller.ex b/lib/pleroma/web/media_proxy/media_proxy_controller.ex index 1e9520d46..1a09ac62a 100644 --- a/lib/pleroma/web/media_proxy/media_proxy_controller.ex +++ b/lib/pleroma/web/media_proxy/media_proxy_controller.ex @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2019 Pleroma Authors +# Copyright © 2017-2020 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.MediaProxy.MediaProxyController do @@ -30,7 +30,7 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController do def filename_matches(%{"filename" => _} = _, path, url) do filename = MediaProxy.filename(url) - if filename && Path.basename(path) != filename do + if filename && does_not_match(path, filename) do {:wrong_filename, filename} else :ok @@ -38,4 +38,9 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController do end def filename_matches(_, _, _), do: :ok + + defp does_not_match(path, filename) do + basename = Path.basename(path) + basename != filename and URI.decode(basename) != filename and URI.encode(basename) != filename + end end