Merge pull request #1814 from wpscanteam/fix/non-latin-character-slugs
Fix case where a theme slug is all non-latin characters
This commit is contained in:
@@ -92,7 +92,7 @@ module WPScan
|
|||||||
tags: 'Tags',
|
tags: 'Tags',
|
||||||
text_domain: 'Text Domain'
|
text_domain: 'Text Domain'
|
||||||
}.each do |attribute, tag|
|
}.each do |attribute, tag|
|
||||||
instance_variable_set(:"@#{attribute}", parse_style_tag(style_body, tag))
|
instance_variable_set(:"@#{attribute}", parse_style_tag(style_body, tag)&.force_encoding('UTF-8'))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -16,5 +16,8 @@ def classify_slug(slug)
|
|||||||
classified = slug.to_s.gsub(/[^a-z\d\-]/i, '-').gsub(/-{1,}/, '_').camelize.to_s
|
classified = slug.to_s.gsub(/[^a-z\d\-]/i, '-').gsub(/-{1,}/, '_').camelize.to_s
|
||||||
classified = "D_#{classified}" if /\d/.match?(classified[0])
|
classified = "D_#{classified}" if /\d/.match?(classified[0])
|
||||||
|
|
||||||
|
# Special case for slugs with all non-latin characters.
|
||||||
|
classified = "HexSlug_#{slug.bytes.map { |i| i.to_s(16) }.join}" if classified.empty?
|
||||||
|
|
||||||
classified.to_sym
|
classified.to_sym
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -7,7 +7,8 @@ describe '#classify_slug' do
|
|||||||
'12-slug' => :D_12Slug,
|
'12-slug' => :D_12Slug,
|
||||||
'slug.s' => :SlugS,
|
'slug.s' => :SlugS,
|
||||||
'slug yolo $' => :SlugYolo,
|
'slug yolo $' => :SlugYolo,
|
||||||
'slug $ ab.cd/12' => :SlugAbCd12
|
'slug $ ab.cd/12' => :SlugAbCd12,
|
||||||
|
'カスタムテーマ' => :HexSlug_e382abe382b9e382bfe383a0e38386e383bce3839e
|
||||||
}.each do |slug, expected_symbol|
|
}.each do |slug, expected_symbol|
|
||||||
context "when #{slug}" do
|
context "when #{slug}" do
|
||||||
it "returns #{expected_symbol}" do
|
it "returns #{expected_symbol}" do
|
||||||
|
|||||||
Reference in New Issue
Block a user