From 8fda16a5a2b007939e100abb3f9140ed2b358ff3 Mon Sep 17 00:00:00 2001 From: wu-leilei Date: Thu, 24 Feb 2022 19:29:49 +0800 Subject: [PATCH] fix no implicit conversion of Hash into Integer (cherry picked from commit 93b78968b3d0cf34a7bb68c4695b3fed209fd43a) --- ...validURIError-no-such-file-directory.patch | 12 ++++++ ...icit-conversion-of-hash-into-integer.patch | 39 +++++++++++++++++++ rubygem-mini_magick.spec | 12 +++++- 3 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 fix-URI-InvalidURIError-no-such-file-directory.patch create mode 100644 fix-no-implicit-conversion-of-hash-into-integer.patch diff --git a/fix-URI-InvalidURIError-no-such-file-directory.patch b/fix-URI-InvalidURIError-no-such-file-directory.patch new file mode 100644 index 0000000..3aa5933 --- /dev/null +++ b/fix-URI-InvalidURIError-no-such-file-directory.patch @@ -0,0 +1,12 @@ +diff -Nur a/spec/lib/mini_magick/image_spec.rb b/spec/lib/mini_magick/image_spec.rb +--- a/spec/lib/mini_magick/image_spec.rb 2022-02-25 09:21:57.370368608 +0800 ++++ b/spec/lib/mini_magick/image_spec.rb 2022-02-25 09:24:14.804683516 +0800 +@@ -79,7 +79,7 @@ + it "doesn't allow remote shell execution" do + expect { + described_class.open("| touch file.txt") # Kernel#open accepts this +- }.to raise_error(URI::InvalidURIError) ++ }.to raise_error(Errno::ENOENT) + + expect(File.exist?("file.txt")).to eq(false) + end diff --git a/fix-no-implicit-conversion-of-hash-into-integer.patch b/fix-no-implicit-conversion-of-hash-into-integer.patch new file mode 100644 index 0000000..c42b91e --- /dev/null +++ b/fix-no-implicit-conversion-of-hash-into-integer.patch @@ -0,0 +1,39 @@ +diff -Nur a/lib/mini_magick/image.rb b/lib/mini_magick/image.rb +--- a/lib/mini_magick/image.rb 2022-02-24 19:57:09.378499137 +0800 ++++ b/lib/mini_magick/image.rb 2022-02-24 20:01:25.738826593 +0800 +@@ -82,15 +82,30 @@ + def self.open(path_or_url, ext = nil, options = {}) + options, ext = ext, nil if ext.is_a?(Hash) + +- uri = URI(path_or_url.to_s) ++ # Don't use Kernel#open, but reuse its logic ++ openable = ++ if path_or_url.respond_to?(:open) ++ path_or_url ++ elsif path_or_url.respond_to?(:to_str) && ++ %r{\A[A-Za-z][A-Za-z0-9+\-\.]*://} =~ path_or_url && ++ (uri = URI.parse(path_or_url)).respond_to?(:open) ++ uri ++ else ++ options = { binmode: true }.merge(options) ++ Pathname(path_or_url) ++ end + +- ext ||= File.extname(uri.path) ++ if openable.is_a?(URI::Generic) ++ ext ||= File.extname(openable.path) ++ else ++ ext ||= File.extname(openable.to_s) ++ end + ext.sub!(/:.*/, '') # hack for filenames or URLs that include a colon + +- if uri.is_a?(URI::HTTP) || uri.is_a?(URI::FTP) +- uri.open(options) { |file| read(file, ext) } ++ if openable.is_a?(URI::Generic) ++ openable.open(options) { |file| read(file, ext) } + else +- File.open(uri.to_s, "rb", options) { |file| read(file, ext) } ++ openable.open(**options) { |file| read(file, ext) } + end + end + diff --git a/rubygem-mini_magick.spec b/rubygem-mini_magick.spec index 4d67968..c678cc3 100644 --- a/rubygem-mini_magick.spec +++ b/rubygem-mini_magick.spec @@ -1,7 +1,7 @@ %global gem_name mini_magick Name: rubygem-%{gem_name} Version: 4.8.0 -Release: 4 +Release: 5 Summary: Manipulate images with minimal use of memory via ImageMagick License: MIT URL: https://github.com/minimagick/minimagick @@ -9,8 +9,10 @@ Source0: https://rubygems.org/gems/%{gem_name}-%{version}.gem Source1: https://github.com/minimagick/minimagick/archive/v%{version}.tar.gz Patch2: CVE-2019-13574-1.patch Patch3: CVE-2019-13574-2.patch +Patch4: fix-URI-InvalidURIError-no-such-file-directory.patch +Patch5: fix-no-implicit-conversion-of-hash-into-integer.patch Requires: ImageMagick -BuildRequires: ruby(release) rubygems-devel ruby rubygem(rspec) rubygem(webmock) ImageMagick +BuildRequires: ruby(release) rubygems-devel ruby rubygem(rspec) rubygem(webmock) ImageMagick rubygem(rexml) BuildArch: noarch %description A ruby wrapper for ImageMagick command line. Using MiniMagick the ruby @@ -28,6 +30,7 @@ Documentation for %{name}. %prep %setup -q -n %{gem_name}-%{version} %patch2 -p1 +%patch5 -p1 %build gem build ../%{gem_name}-%{version}.gemspec @@ -43,6 +46,8 @@ pushd .%{gem_instdir} tar xzvf %{SOURCE1} cd minimagick-%{version} cat %{PATCH3} | patch -p1 +cat %{PATCH4} | patch -p1 +cat %{PATCH5} | patch -p1 sed -i 's/"red"/"Red"/g' spec/lib/mini_magick/image_spec.rb sed -i '/"date:create"/d' spec/lib/mini_magick/image_spec.rb sed -i '/Clipping path/d' spec/lib/mini_magick/image_spec.rb @@ -71,6 +76,9 @@ popd %{gem_instdir}/Rakefile %changelog +* Thu Feb 24 2022 wulei - 1.0.2-5 +- Fix no implicit conversion of Hash into Integer + * Sat Jan 15 2022 Ge Wang - 1.0.2-4 - Fix test case failure -- Gitee