From 337b758bfecc16d1401c336fb38684296dc280db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Rodr=C3=ADguez=20Troiti=C3=B1o?= Date: Thu, 8 Oct 2009 08:51:11 +0200 Subject: [PATCH] Fixes the handling of the filename parameter. Uses the RE used by Ruby in cgi.rb, that handles the embedded semicolons in the filename correctly. Signed-off-by: Christian Neukirchen --- lib/rack/utils.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rack/utils.rb b/lib/rack/utils.rb index 74303eff7..884e60455 100644 --- a/lib/rack/utils.rb +++ b/lib/rack/utils.rb @@ -449,7 +449,7 @@ def self.parse_multipart(env) head = buf.slice!(0, i+2) # First \r\n buf.slice!(0, 2) # Second \r\n - filename = head[/Content-Disposition:.* filename="?([^\";]*)"?/ni, 1] + filename = head[/Content-Disposition:.* filename=(?:"((?:\\.|[^\"])*)"|([^;\s]*))/ni, 1] content_type = head[/Content-Type: (.*)#{EOL}/ni, 1] name = head[/Content-Disposition:.*\s+name="?([^\";]*)"?/ni, 1] || head[/Content-ID:\s*([^#{EOL}]*)/ni, 1]