FIX: XML files could be detected as SVG files

This commit is contained in:
Gerhard Schlager 2020-05-26 17:07:16 +02:00
parent 4dc6504234
commit 69ee94b526
2 changed files with 61 additions and 0 deletions

View File

@ -0,0 +1,21 @@
# frozen_string_literal: true
# Remove when https://github.com/sdsykes/fastimage/pull/115
# has been merged. Please remove the specs as well.
class FastImage
attr_reader :original_type
private
old_parse_type = instance_method(:parse_type)
define_method(:parse_type) do
@original_type = old_parse_type.bind(self).()
if @original_type == :svg && @stream.peek(2) == "<s"
raise UnknownImageType if @stream.peek(4) != "<svg"
end
@original_type
end
end

View File

@ -0,0 +1,40 @@
# frozen_string_literal: true
require 'rails_helper'
describe FastImage do
let(:svg_file) do
StringIO.new(<<~SVG)
<svg width="100" height="100">
<circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
</svg>
SVG
end
let(:xml_file) do
StringIO.new(<<~XML)
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<foo />
</soap:Body>
</soap:Envelope>
XML
end
it "correctly detects SVG" do
expect(FastImage.new(svg_file).type).to eq(:svg)
end
it "doesn't detect XML starting with <s as SVG" do
expect(FastImage.new(xml_file).type).to be_nil
end
it "still needs to be monkey patched" do
expect(FastImage.new(xml_file).original_type).to eq(:svg), <<~MESSAGE
The fast_image monkey patch isn't needed anymore.
Please remove the following files:
* lib/freedom_patches/fast_image.rb
* spec/components/freedom_patches/fast_image_spec.rb
MESSAGE
end
end