sisimai 5.7.1-java → 5.7.2-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 267d3c5c73f0b2b4363d47d99c5401fb25bdeadb82a7d5ad5db5395cbae36f2e
4
- data.tar.gz: a436d29643e0656c7596e7612c459ea57f74acc3559b3321c8900478ed80a3a3
3
+ metadata.gz: a713d133864ab6845c95ba347b30385f5c564864c9afa3edeb0b5f37aebcda7e
4
+ data.tar.gz: ee3ea2d230b497c8f58c643a387838701118449b6bdb04a23229ff3544e6c782
5
5
  SHA512:
6
- metadata.gz: 58bdb70256c494218eb4c6d6fdb217ee96a65623d49a3eccba1c18772203e538f559b8f8e25fcb8b5e774ab18fe0adb6e5d0c13a5715d56ca66a8f02ee7f3960
7
- data.tar.gz: 60e4179de572d4fc79ea66802fc5d25424e7a956ab27b7b93538999196c3e357fb8709805e38ea70a7fb9726f1a091c27f501d51bb14b3d8b9e5ff0ff63401f9
6
+ metadata.gz: 28936ef912d907d24160bdf111a7f047a85fa7a6aa4f41405d2c3c6aee37bb0ce25a38b5fa21b424bc92af481756a06c608291546db776d96cc4a362f20d9321
7
+ data.tar.gz: 53693d2372481b610b312563f1ebec102572fc8b98435c640c05a0a0a5e5a067e763b339e20d8964d3ace364a10eaa8ad2c34be7f4b9cc3fd547b36008df1b0f
@@ -15,7 +15,7 @@ jobs:
15
15
  - name: Setup CRuby
16
16
  uses: ruby/setup-ruby@v1
17
17
  with:
18
- ruby-version: "3.4.7"
18
+ ruby-version: "3.4.10"
19
19
  - name: Install minitest
20
20
  run: gem install minitest -v 5.15.0
21
21
  - name: Install oj
@@ -11,7 +11,7 @@ jobs:
11
11
  strategy:
12
12
  fail-fast: false
13
13
  matrix:
14
- cruby: ["2.5.9", "3.3.10", "3.4.7"]
14
+ cruby: ["2.5.9", "3.3.10", "3.4.10"]
15
15
  steps:
16
16
  - name: Checkout the repository(CRuby)
17
17
  uses: actions/checkout@v4
data/ChangeLog.md CHANGED
@@ -4,6 +4,16 @@ RELEASE NOTES for Ruby version of Sisimai
4
4
  - download: "https://rubygems.org/gems/sisimai"
5
5
  - document: "https://libsisimai.org/"
6
6
 
7
+ v5.7.2
8
+ ---------------------------------------------------------------------------------------------------
9
+ - release: "Mon, 31 Aug 2026 18:25:22 +0900 (JST)"
10
+ - version: "5.7.2"
11
+ - changes:
12
+ - Fix ReDoS vulnerability in `Sisimai::String.to_plain` method when parsing specific HTML tags
13
+ (GHSA-9j9h-h4vm-p7g4). Thanks to @arpitjain099 for reporting and testing.
14
+ - #455 Resolved quadratic memory allocation in `Sisimai::Message` to improve parsing performance
15
+ and reduce memory usage. Thanks to @azranel.
16
+
7
17
  v5.7.1
8
18
  ---------------------------------------------------------------------------------------------------
9
19
  - release: "Fri, 17 Jul 2026 13:22:22 +0900 (JST)"
data/README-JA.md CHANGED
@@ -11,9 +11,10 @@
11
11
  [^1]: 4系を`clone`する場合は`git clone -b 4-stable https://github.com/sisimai/rb-sisimai.git`
12
12
 
13
13
  > [!CAUTION]
14
- > **Sisimai 4.25.14p11およびそれ以前のバージョンには 正規表現に関する脆弱性
15
- > [ReDoS: CVE-2022-4891](https://jvndb.jvn.jp/ja/contents/2022/JVNDB-2022-005663.html)があります。
16
- > 該当するバージョンをお使いの場合はv4.25.14p12以降へアップグレードしてください。**
14
+ > **Sisimai 4.25.17およびそれ以前の、Sisimai 5.7.1およびそれ以前のバージョンには 正規表現に関する脆弱性
15
+ > [ReDoS: CVE-2022-4891](https://jvndb.jvn.jp/ja/contents/2022/JVNDB-2022-005663.html)
16
+ > [ReDos: CVE-2026-XXXX/番号の発行待ち]()があります。
17
+ > 該当するバージョンをお使いの場合はv4.25.18またはv5.7.2以降へアップグレードしてください。**
17
18
 
18
19
  > [!WARNING]
19
20
  > Sisimai 5はRuby 2.5以上が必要です。インストール/アップグレードを実行する前に`ruby -v`コマンドで
@@ -116,10 +117,10 @@ Install
116
117
  ### From RubyGems.org
117
118
  ```shell
118
119
  $ sudo gem install sisimai
119
- Fetching: sisimai-5.7.1.gem (100%)
120
- Successfully installed sisimai-5.7.1
121
- Parsing documentation for sisimai-5.7.1
122
- Installing ri documentation for sisimai-5.7.1
120
+ Fetching: sisimai-5.7.2.gem (100%)
121
+ Successfully installed sisimai-5.7.2
122
+ Parsing documentation for sisimai-5.7.2
123
+ Installing ri documentation for sisimai-5.7.2
123
124
  Done installing documentation for sisimai after 6 seconds
124
125
  1 gem installed
125
126
  ```
@@ -147,13 +148,13 @@ if [ -d "/usr/local/jr" ]; then \
147
148
  ...
148
149
  3 gems installed
149
150
  /opt/local/bin/rake install
150
- sisimai 5.7.1 built to pkg/sisimai-5.7.1.gem.
151
- sisimai (5.7.1) installed.
151
+ sisimai 5.7.2 built to pkg/sisimai-5.7.2.gem.
152
+ sisimai (5.7.2) installed.
152
153
  if [ -d "/usr/local/jr" ]; then \
153
154
  PATH="/usr/local/jr/bin:$PATH" /usr/local/jr/bin/rake install; \
154
155
  fi
155
- sisimai 5.7.1 built to pkg/sisimai-5.7.1-java.gem.
156
- sisimai (5.7.1) installed.
156
+ sisimai 5.7.2 built to pkg/sisimai-5.7.2-java.gem.
157
+ sisimai (5.7.2) installed.
157
158
  ```
158
159
 
159
160
  Usage
@@ -362,9 +363,9 @@ Sisimai 5.5.0から**Ruby 2.5以上**が必要になります。
362
363
  | 解析エンジン(MTA/ESPモジュール)の数 | 68 | 60 |
363
364
  | 検出可能なバウンス理由の数 | 29 | 34 |
364
365
  | 依存Gem数(Ruby Standard Gemsを除く) | 1 Gem | 1 Gem |
365
- | ソースコードの行数 | 10,800 行 | 9,700 行 |
366
+ | ソースコードの行数 | 10,800 行 | 9,670 行 |
366
367
  | テストフレームワーク | rspec | minitest |
367
- | テスト件数(spec/またはtest/ディレクトリ) | 311,000 件 | 240,000 件 |
368
+ | テスト件数(spec/またはtest/ディレクトリ) | 311,000 件 | 255,000 件 |
368
369
  | 1秒間に解析できるバウンスメール数[^4] | 620 通 | 620 通 |
369
370
  | ライセンス | 2条項BSD | 2条項BSD |
370
371
  | 開発会社による商用サポート | 提供中 | 提供中 |
data/README.md CHANGED
@@ -12,9 +12,9 @@
12
12
  [^1]: Specify `-b 4-stable` when you clone Sisimai 4 for example, `git clone -b 4-stable https://github.com/sisimai/rb-sisimai.git`
13
13
 
14
14
  > [!CAUTION]
15
- > **Sisimai versions 4.25.14p11 and earlier contain a regular expression vulnerability
16
- > [ReDoS: CVE-2022-4891](https://nvd.nist.gov/vuln/detail/CVE-2022-4891).
17
- > If you are using one of these versions, please upgrade to v4.25.14p12 or later.**
15
+ > **Sisimai versions 4.25.17 and earlier, as well as 5.7.1 and earlier, contain regular expression vulnerabilities
16
+ > ([ReDoS: CVE-2022-4891](https://nvd.nist.gov/vuln/detail/CVE-2022-4891), ReDoS: CVE Pending).
17
+ > If you are using affected versions, please upgrade to v4.25.18 or v5.7.2 or later.**
18
18
 
19
19
  > [!WARNING]
20
20
  > Sisimai 5 requires Ruby 2.5 or later. Check the version of Ruby in your system before installing/upgrading
@@ -115,10 +115,10 @@ Install
115
115
  ### From RubyGems
116
116
  ```shell
117
117
  $ sudo gem install sisimai
118
- Fetching: sisimai-5.7.1.gem (100%)
119
- Successfully installed sisimai-5.7.1
120
- Parsing documentation for sisimai-5.7.1
121
- Installing ri documentation for sisimai-5.7.1
118
+ Fetching: sisimai-5.7.2.gem (100%)
119
+ Successfully installed sisimai-5.7.2
120
+ Parsing documentation for sisimai-5.7.2
121
+ Installing ri documentation for sisimai-5.7.2
122
122
  Done installing documentation for sisimai after 6 seconds
123
123
  1 gem installed
124
124
  ```
@@ -146,13 +146,13 @@ if [ -d "/usr/local/jr" ]; then \
146
146
  ...
147
147
  3 gems installed
148
148
  /opt/local/bin/rake install
149
- sisimai 5.7.1 built to pkg/sisimai-5.7.1.gem.
150
- sisimai (5.7.1) installed.
149
+ sisimai 5.7.2 built to pkg/sisimai-5.7.2.gem.
150
+ sisimai (5.7.2) installed.
151
151
  if [ -d "/usr/local/jr" ]; then \
152
152
  PATH="/usr/local/jr/bin:$PATH" /usr/local/jr/bin/rake install; \
153
153
  fi
154
- sisimai 5.7.1 built to pkg/sisimai-5.7.1-java.gem.
155
- sisimai (5.7.1) installed.
154
+ sisimai 5.7.2 built to pkg/sisimai-5.7.2-java.gem.
155
+ sisimai (5.7.2) installed.
156
156
  ```
157
157
 
158
158
  Usage
@@ -361,7 +361,7 @@ Beginning with v5.5.0, Sisimai requires **Ruby 2.5.0 or later.**
361
361
  | The number of MTA/ESP modules | 68 | 61 |
362
362
  | The number of detectable bounce reasons | 29 | 34 |
363
363
  | Dependencies (Except Ruby Standard Gems) | 1 gem | 1 gem |
364
- | Source lines of code | 10,300 lines | 9,500 lines |
364
+ | Source lines of code | 10,300 lines | 9,670 lines |
365
365
  | Test frameworks | rspec | minitest |
366
366
  | The number of tests in spec/ or test/ directory | 311,000 tests | 255,000 tests |
367
367
  | The number of bounce emails decoded/sec (CRuby)[^4] | 620 emails | 620 emails |
@@ -202,7 +202,7 @@ module Sisimai
202
202
  def tidy(argv0 = '')
203
203
  return '' if argv0.empty?
204
204
 
205
- email = ''
205
+ email = ::String.new(capacity: argv0.bytesize, encoding: Encoding::UTF_8)
206
206
  lines = argv0.split("\n")
207
207
  index = -1
208
208
  lines.each do |e|
@@ -215,7 +215,7 @@ module Sisimai
215
215
  index += 1
216
216
  if fn == ''
217
217
  # There is neither ":" character nor the field listed in $FieldTable
218
- email += "#{e}\n"
218
+ email << e << "\n"
219
219
  next
220
220
  end
221
221
 
@@ -294,12 +294,12 @@ module Sisimai
294
294
 
295
295
  # 4. Remove redundant space characters
296
296
  bf = bf.squeeze(' ').strip
297
- email += sprintf("%s: %s\n", fn, bf)
297
+ email << sprintf("%s: %s\n", fn, bf)
298
298
  end
299
299
 
300
300
  # 5. Convert the lower-cased SMTP command to the upper-cased.
301
- email = email.gsub("after end of data:", "after end of DATA:")
302
- email += "\n" if email.end_with?("\n\n") == false
301
+ email.gsub!("after end of data:", "after end of DATA:")
302
+ email << "\n" if email.end_with?("\n\n") == false
303
303
  return email
304
304
  end
305
305
 
@@ -428,4 +428,3 @@ module Sisimai
428
428
  end
429
429
  end
430
430
  end
431
-
@@ -53,9 +53,10 @@ module Sisimai
53
53
  # 3. <a href = 'http://...'>...</a> to " http://... "
54
54
  # 4. <a href = 'mailto:...'>...</a> to " Value <mailto:...> "
55
55
  plain.scrub!('?')
56
- plain = plain.gsub(%r|<head>.+</head>|im, '')
57
- plain = plain.gsub(%r|<style.+?>.+</style>|im, '')
58
- plain = plain.gsub(%r|<a\s+href\s*=\s*['"](https?://.+?)['"].*?>(.*?)</a>|i, '[\2](\1)')
56
+ cv = plain.downcase
57
+ plain = plain.gsub(%r|<head>.+?</head>|im, "") if cv.include?("</head>")
58
+ plain = plain.gsub(%r|<style.+?>.+?</style>|im, "") if cv.include?("</style>")
59
+ plain = plain.gsub(%r|<a\s+href\s*=\s*(['"])(https?://[^'"]+?)\1[^>]*?>(.*?)</a>|i, ' [\3](\2) ')
59
60
  plain = plain.gsub(%r|<a\s+href\s*=\s*["']mailto:([^\s]+?)["']>(.*?)</a>|i, '[\2](mailto:\1)')
60
61
  plain = plain.gsub(/<[^<@>]+?>\s*/, ' ') # Delete HTML tags except <neko@example.jp>
61
62
  plain = plain.gsub(/&lt;/, '<').gsub(/&gt;/, '>') # Convert to angle brackets
@@ -1,4 +1,4 @@
1
1
  # Define the version number of Sisimai
2
2
  module Sisimai
3
- VERSION = '5.7.1'.freeze
3
+ VERSION = '5.7.2'.freeze
4
4
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sisimai
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.7.1
4
+ version: 5.7.2
5
5
  platform: java
6
6
  authors:
7
7
  - azumakuniyuki
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2026-07-17 00:00:00.000000000 Z
10
+ date: 2026-08-31 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: bundler