Replaces use of Digest::MD5 / Digest::SHA1 with ActiveSupport::Digest (#35217).

Patch by Jens Krämer (@jkraemer).

git-svn-id: https://svn.redmine.org/redmine/trunk@22816 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Marius Balteanu
2024-05-07 18:36:46 +00:00
parent 9ef1cdd375
commit b4bfb6b581
10 changed files with 13 additions and 17 deletions

View File

@@ -279,7 +279,7 @@ class RepositoriesController < ApplicationController
User.current.preference.save User.current.preference.save
end end
@cache_key = "repositories/diff/#{@repository.id}/" + @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) unless read_fragment(@cache_key)
@diff = @repository.diff(@path, @rev, @rev_to) @diff = @repository.diff(@path, @rev, @rev_to)
(show_error_not_found; return) unless @diff (show_error_not_found; return) unless @diff

View File

@@ -135,7 +135,7 @@ class Attachment < ApplicationRecord
end end
# Copies the temporary file to its final location # Copies the temporary file to its final location
# and computes its MD5 hash # and computes its hash
def files_to_final_location def files_to_final_location
if @temp_file if @temp_file
self.disk_directory = target_directory self.disk_directory = target_directory
@@ -559,7 +559,7 @@ class Attachment < ApplicationRecord
if %r{^[a-zA-Z0-9_\.\-]*$}.match?(filename) && filename.length <= 50 if %r{^[a-zA-Z0-9_\.\-]*$}.match?(filename) && filename.length <= 50
ascii = filename ascii = filename
else else
ascii = Digest::MD5.hexdigest(filename) ascii = ActiveSupport::Digest.hexdigest(filename)
# keep the extension if any # keep the extension if any
ascii << $1 if filename =~ %r{(\.[a-zA-Z0-9]+)$} ascii << $1 if filename =~ %r{(\.[a-zA-Z0-9]+)$}
end end

View File

@@ -1,5 +1,5 @@
<% @entries.each do |entry| %> <% @entries.each do |entry| %>
<% tr_id = Digest::MD5.hexdigest(entry.path) <% tr_id = ActiveSupport::Digest.hexdigest(entry.path)
depth = params[:depth].to_i %> depth = params[:depth].to_i %>
<% ent_path = Redmine::CodesetUtil.replace_invalid_utf8(entry.path) %> <% ent_path = Redmine::CodesetUtil.replace_invalid_utf8(entry.path) %>
<% ent_name = Redmine::CodesetUtil.replace_invalid_utf8(entry.name) %> <% ent_name = Redmine::CodesetUtil.replace_invalid_utf8(entry.name) %>

View File

@@ -18,7 +18,6 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
require_relative 'wiki_formatting/textile/redcloth3' require_relative 'wiki_formatting/textile/redcloth3'
require 'digest/md5'
module Redmine module Redmine
module WikiFormatting module WikiFormatting
@@ -110,7 +109,7 @@ module Redmine
# Returns a cache key for the given text +format+, +text+, +object+ and +attribute+ or nil if no caching should be done # 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) def cache_key_for(format, text, object, attribute)
if object && attribute && !object.new_record? && format.present? 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
end end

View File

@@ -22,13 +22,13 @@ module Redmine
module SectionHelper module SectionHelper
def get_section(index) def get_section(index)
section = extract_sections(index)[1] section = extract_sections(index)[1]
hash = Digest::MD5.hexdigest(section) hash = ActiveSupport::Digest.hexdigest(section)
return section, hash return section, hash
end end
def update_section(index, update, hash=nil) def update_section(index, update, hash=nil)
t = extract_sections(index) 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 raise Redmine::WikiFormatting::StaleSectionError
end end

View File

@@ -17,8 +17,6 @@
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
require 'digest/md5'
module Redmine module Redmine
module WikiFormatting module WikiFormatting
module Textile module Textile

View File

@@ -677,7 +677,7 @@ class WikiControllerTest < Redmine::ControllerTest
:version => 3 :version => 3
}, },
:section => 2, :section => 2,
:section_hash => Digest::MD5.hexdigest("wrong hash") :section_hash => ActiveSupport::Digest.hexdigest("wrong hash")
} }
end end
end end

View File

@@ -292,7 +292,7 @@ class Redmine::WikiFormatting::CommonMark::FormatterTest < ActionView::TestCase
assert_kind_of Array, result assert_kind_of Array, result
assert_equal 2, result.size assert_equal 2, result.size
assert_equal expected, result.first, "section content did not match" 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 end
end end

View File

@@ -349,6 +349,6 @@ class Redmine::WikiFormatting::MarkdownFormatterTest < ActionView::TestCase
assert_kind_of Array, result assert_kind_of Array, result
assert_equal 2, result.size assert_equal 2, result.size
assert_equal expected, result.first, "section content did not match" 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 end

View File

@@ -19,7 +19,6 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
require_relative '../../../../test_helper' require_relative '../../../../test_helper'
require 'digest/md5'
class Redmine::WikiFormatting::TextileFormatterTest < ActionView::TestCase class Redmine::WikiFormatting::TextileFormatterTest < ActionView::TestCase
def setup def setup
@@ -491,13 +490,13 @@ class Redmine::WikiFormatting::TextileFormatterTest < ActionView::TestCase
assert_equal( assert_equal(
[STR_WITHOUT_PRE[0], replacement, STR_WITHOUT_PRE[2..4]].flatten.join("\n\n"), [STR_WITHOUT_PRE[0], replacement, STR_WITHOUT_PRE[2..4]].flatten.join("\n\n"),
@formatter.new(TEXT_WITHOUT_PRE). @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 end
def test_update_section_with_wrong_hash_should_raise_an_error def test_update_section_with_wrong_hash_should_raise_an_error
assert_raise Redmine::WikiFormatting::StaleSectionError do 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
end end
@@ -809,6 +808,6 @@ class Redmine::WikiFormatting::TextileFormatterTest < ActionView::TestCase
assert_kind_of Array, result assert_kind_of Array, result
assert_equal 2, result.size assert_equal 2, result.size
assert_equal expected, result.first, "section content did not match" 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 end