Content-Disposition regex improvements
authorrinpatch <rinpatch@sdf.org>
Fri, 15 Mar 2019 05:29:51 +0000 (08:29 +0300)
committerrinpatch <rinpatch@sdf.org>
Fri, 15 Mar 2019 05:29:51 +0000 (08:29 +0300)
lib/pleroma/reverse_proxy.ex

index 39ede8619a77c974432025151458e35dcedb1263..a3f177fec06d4ea8ab3da7e41d9a159663ca02ff 100644 (file)
@@ -316,9 +316,9 @@ defmodule Pleroma.ReverseProxy do
           {{"content-disposition", content_disposition_string}, _} =
             List.keytake(headers, "content-disposition", 0)
 
-          [name] =
+          [name | _] =
             Regex.run(
-              ~r/filename=\"(.*)\"/u,
+              ~r/filename="((?:[^"\\]|\\.)*)"/u,
               content_disposition_string || "",
               capture: :all_but_first
             )
@@ -328,7 +328,7 @@ defmodule Pleroma.ReverseProxy do
           MatchError -> Keyword.get(opts, :attachment_name, "attachment")
         end
 
-      disposition = "attachment; filename=" <> name
+      disposition = "attachment; filename=\"#{name}\""
 
       List.keystore(headers, "content-disposition", 0, {"content-disposition", disposition})
     else