From b4bfb6b581035b52a193c74ac74825f3652a014a Mon Sep 17 00:00:00 2001 From: Marius Balteanu Date: Tue, 7 May 2024 18:36:46 +0000 Subject: [PATCH] Replaces use of Digest::MD5 / Digest::SHA1 with ActiveSupport::Digest (#35217). MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Patch by Jens Krämer (@jkraemer). git-svn-id: https://svn.redmine.org/redmine/trunk@22816 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/repositories_controller.rb | 2 +- app/models/attachment.rb | 4 ++-- app/views/repositories/_dir_list_content.html.erb | 2 +- lib/redmine/wiki_formatting.rb | 3 +-- lib/redmine/wiki_formatting/section_helper.rb | 4 ++-- lib/redmine/wiki_formatting/textile/formatter.rb | 2 -- test/functional/wiki_controller_test.rb | 2 +- .../redmine/wiki_formatting/common_mark/formatter_test.rb | 2 +- .../lib/redmine/wiki_formatting/markdown_formatter_test.rb | 2 +- .../lib/redmine/wiki_formatting/textile_formatter_test.rb | 7 +++---- 10 files changed, 13 insertions(+), 17 deletions(-) diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index 2645ded4079..8deb3540468 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -279,7 +279,7 @@ def diff User.current.preference.save end @cache_key = "repositories/diff/#{@repository.id}/" + - Digest::MD5.hexdigest("#{@path}-#{@rev}-#{@rev_to}-#{@diff_type}-#{current_language}") + ActiveSupport::Digest.hexdigest("#{@path}-#{@rev}-#{@rev_to}-#{@diff_type}-#{current_language}") unless read_fragment(@cache_key) @diff = @repository.diff(@path, @rev, @rev_to) (show_error_not_found; return) unless @diff diff --git a/app/models/attachment.rb b/app/models/attachment.rb index c9054e90327..59addf5281c 100644 --- a/app/models/attachment.rb +++ b/app/models/attachment.rb @@ -135,7 +135,7 @@ def filename=(arg) end # Copies the temporary file to its final location - # and computes its MD5 hash + # and computes its hash def files_to_final_location if @temp_file self.disk_directory = target_directory @@ -559,7 +559,7 @@ def create_diskfile(filename, directory=nil, &block) if %r{^[a-zA-Z0-9_\.\-]*$}.match?(filename) && filename.length <= 50 ascii = filename else - ascii = Digest::MD5.hexdigest(filename) + ascii = ActiveSupport::Digest.hexdigest(filename) # keep the extension if any ascii << $1 if filename =~ %r{(\.[a-zA-Z0-9]+)$} end diff --git a/app/views/repositories/_dir_list_content.html.erb b/app/views/repositories/_dir_list_content.html.erb index ee68c1b7a5d..396c7f6d0ff 100644 --- a/app/views/repositories/_dir_list_content.html.erb +++ b/app/views/repositories/_dir_list_content.html.erb @@ -1,5 +1,5 @@ <% @entries.each do |entry| %> -<% tr_id = Digest::MD5.hexdigest(entry.path) +<% tr_id = ActiveSupport::Digest.hexdigest(entry.path) depth = params[:depth].to_i %> <% ent_path = Redmine::CodesetUtil.replace_invalid_utf8(entry.path) %> <% ent_name = Redmine::CodesetUtil.replace_invalid_utf8(entry.name) %> diff --git a/lib/redmine/wiki_formatting.rb b/lib/redmine/wiki_formatting.rb index 3486c74c615..cc68e9972ba 100644 --- a/lib/redmine/wiki_formatting.rb +++ b/lib/redmine/wiki_formatting.rb @@ -18,7 +18,6 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require_relative 'wiki_formatting/textile/redcloth3' -require 'digest/md5' module Redmine module WikiFormatting @@ -110,7 +109,7 @@ def supports_section_edit? # Returns a cache key for the given text +format+, +text+, +object+ and +attribute+ or nil if no caching should be done def cache_key_for(format, text, object, attribute) if object && attribute && !object.new_record? && format.present? - "formatted_text/#{format}/#{object.class.model_name.cache_key}/#{object.id}-#{attribute}-#{Digest::MD5.hexdigest text}" + "formatted_text/#{format}/#{object.class.model_name.cache_key}/#{object.id}-#{attribute}-#{ActiveSupport::Digest.hexdigest text}" end end diff --git a/lib/redmine/wiki_formatting/section_helper.rb b/lib/redmine/wiki_formatting/section_helper.rb index 9221d990df7..6f53a3f8e7f 100644 --- a/lib/redmine/wiki_formatting/section_helper.rb +++ b/lib/redmine/wiki_formatting/section_helper.rb @@ -22,13 +22,13 @@ module WikiFormatting module SectionHelper def get_section(index) section = extract_sections(index)[1] - hash = Digest::MD5.hexdigest(section) + hash = ActiveSupport::Digest.hexdigest(section) return section, hash end def update_section(index, update, hash=nil) t = extract_sections(index) - if hash.present? && hash != Digest::MD5.hexdigest(t[1]) + if hash.present? && hash != ActiveSupport::Digest.hexdigest(t[1]) raise Redmine::WikiFormatting::StaleSectionError end diff --git a/lib/redmine/wiki_formatting/textile/formatter.rb b/lib/redmine/wiki_formatting/textile/formatter.rb index 1cacfeed61c..35684a6c78c 100644 --- a/lib/redmine/wiki_formatting/textile/formatter.rb +++ b/lib/redmine/wiki_formatting/textile/formatter.rb @@ -17,8 +17,6 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -require 'digest/md5' - module Redmine module WikiFormatting module Textile diff --git a/test/functional/wiki_controller_test.rb b/test/functional/wiki_controller_test.rb index 215c9caf4f3..31dcf395d5c 100644 --- a/test/functional/wiki_controller_test.rb +++ b/test/functional/wiki_controller_test.rb @@ -677,7 +677,7 @@ def test_update_section_should_not_allow_stale_section_update :version => 3 }, :section => 2, - :section_hash => Digest::MD5.hexdigest("wrong hash") + :section_hash => ActiveSupport::Digest.hexdigest("wrong hash") } end end diff --git a/test/unit/lib/redmine/wiki_formatting/common_mark/formatter_test.rb b/test/unit/lib/redmine/wiki_formatting/common_mark/formatter_test.rb index 16bd8c97296..03376e34219 100644 --- a/test/unit/lib/redmine/wiki_formatting/common_mark/formatter_test.rb +++ b/test/unit/lib/redmine/wiki_formatting/common_mark/formatter_test.rb @@ -292,7 +292,7 @@ def assert_section_with_hash(expected, text, index) assert_kind_of Array, result assert_equal 2, result.size assert_equal expected, result.first, "section content did not match" - assert_equal Digest::MD5.hexdigest(expected), result.last, "section hash did not match" + assert_equal ActiveSupport::Digest.hexdigest(expected), result.last, "section hash did not match" end end end diff --git a/test/unit/lib/redmine/wiki_formatting/markdown_formatter_test.rb b/test/unit/lib/redmine/wiki_formatting/markdown_formatter_test.rb index 75d3ff3659c..012ec7ec92e 100644 --- a/test/unit/lib/redmine/wiki_formatting/markdown_formatter_test.rb +++ b/test/unit/lib/redmine/wiki_formatting/markdown_formatter_test.rb @@ -349,6 +349,6 @@ def assert_section_with_hash(expected, text, index) assert_kind_of Array, result assert_equal 2, result.size assert_equal expected, result.first, "section content did not match" - assert_equal Digest::MD5.hexdigest(expected), result.last, "section hash did not match" + assert_equal ActiveSupport::Digest.hexdigest(expected), result.last, "section hash did not match" end end diff --git a/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb b/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb index cdbad2a552e..32280cfdf05 100644 --- a/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb +++ b/test/unit/lib/redmine/wiki_formatting/textile_formatter_test.rb @@ -19,7 +19,6 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require_relative '../../../../test_helper' -require 'digest/md5' class Redmine::WikiFormatting::TextileFormatterTest < ActionView::TestCase def setup @@ -491,13 +490,13 @@ def test_update_section_with_hash_should_update_the_requested_section assert_equal( [STR_WITHOUT_PRE[0], replacement, STR_WITHOUT_PRE[2..4]].flatten.join("\n\n"), @formatter.new(TEXT_WITHOUT_PRE). - update_section(2, replacement, Digest::MD5.hexdigest(STR_WITHOUT_PRE[1])) + update_section(2, replacement, ActiveSupport::Digest.hexdigest(STR_WITHOUT_PRE[1])) ) end def test_update_section_with_wrong_hash_should_raise_an_error assert_raise Redmine::WikiFormatting::StaleSectionError do - @formatter.new(TEXT_WITHOUT_PRE).update_section(2, "New text", Digest::MD5.hexdigest("Old text")) + @formatter.new(TEXT_WITHOUT_PRE).update_section(2, "New text", ActiveSupport::Digest.hexdigest("Old text")) end end @@ -809,6 +808,6 @@ def assert_section_with_hash(expected, text, index) assert_kind_of Array, result assert_equal 2, result.size assert_equal expected, result.first, "section content did not match" - assert_equal Digest::MD5.hexdigest(expected), result.last, "section hash did not match" + assert_equal ActiveSupport::Digest.hexdigest(expected), result.last, "section hash did not match" end end