Be more cautious when parsing charset from file

This commit is contained in:
Oliver Günther
2026-05-29 10:30:07 +02:00
parent 5330745e69
commit a852d46cb6
2 changed files with 28 additions and 2 deletions
@@ -90,8 +90,11 @@ module OpenProject
end
def extract_mime_and_charset(type)
mime, charset_param = type.split(";", 2).map(&:strip)
charset = charset_param&.match(/\Acharset=(.+)\z/)&.[](1)
parts = type.split(";").map(&:strip)
mime = parts.first
charset = parts.drop(1)
.filter_map { |p| p.match(/\Acharset=([^\s;]+)\z/)&.[](1) }
.first
charset = nil if charset == "binary"
[mime, charset]
end