From 0c4449858120c2b4e1ca1785dba166138609f31d Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Wed, 13 Feb 2019 13:29:37 +0000 Subject: [PATCH] download_strategy: more robust filename content encoding handling. Fixes #5713. --- Library/Homebrew/download_strategy.rb | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/download_strategy.rb b/Library/Homebrew/download_strategy.rb index 3e86038a75..8481378f93 100644 --- a/Library/Homebrew/download_strategy.rb +++ b/Library/Homebrew/download_strategy.rb @@ -371,12 +371,16 @@ class CurlDownloadStrategy < AbstractFileDownloadStrategy parse_content_disposition = lambda do |line| next unless content_disposition = content_disposition_parser.parse(line, true) + filename = nil + if filename_with_encoding = content_disposition.parameters["filename*"] encoding, encoded_filename = filename_with_encoding.split("''", 2) - URI.decode_www_form_component(encoded_filename).encode(encoding) - else - content_disposition.filename + if encoding && encoded_filename + filename = URI.decode_www_form_component(encoded_filename).encode(encoding) + end end + + filename || content_disposition.filename end filenames = lines.map(&parse_content_disposition).compact