bugsnag 6.26.2 → 6.26.4

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: 87508e2fde2b235e826dea54f9f05ee75cca5d046cd76e95a5f4d6136c1a401c
4
- data.tar.gz: c832d4f17a80904cc9b786043d8f56bd01c495aeb00fc98a5129bd4297c96eea
3
+ metadata.gz: 0f5f206e7ff8559ae2b853a2600004877d41d36414ea82b1cce49c41940e34dc
4
+ data.tar.gz: '08e3054a24b2c3928cd8e130a995525223989d09fdf1d0a5fdaefc71d460bbc0'
5
5
  SHA512:
6
- metadata.gz: cbe54bdc037eccae528486bd8608ea265c16718b6644c522415245fed6b003e47cff209f21a2bdd152e2270c17ba978a2d9d5f0e8f11c6ac902b503e56cec1b6
7
- data.tar.gz: 7c5ed7ae765769c16dfa9c59892520618bfbfc31e4142ad198d0988d21f834255d7c31f8f3b3d12ae5e80fe3d9707ca93981c24981ad01dc14231161b17089fa
6
+ metadata.gz: 785d927eeaf5c3c2d2af5c04b33295dee3ce172354da1434b245e0d706b29d04aa6261c9a55764d9b726e0d6e9f0cf1e4523925925bb5f7118b86954e391b1d9
7
+ data.tar.gz: f11f3d9508cee3b65a4da040d681aa703710cc2e3718b40292daa5534d4ffdcb929334ef9640bca4901754379848d2bd42e8f63b9211b7eb5d2f758499b9d950
data/CHANGELOG.md CHANGED
@@ -1,6 +1,23 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
+ ## v6.26.4 (25 March 2024)
5
+
6
+ ### Fixes
7
+
8
+ * Fix Unicode encoding issues when using `Exception#detailed_message` (Ruby 3.2+)
9
+ | [#817](https://github.com/bugsnag/bugsnag-ruby/pull/817)
10
+ * Fix compatibility with Ruby 3.4-dev
11
+ | [#815](https://github.com/bugsnag/bugsnag-ruby/pull/815)
12
+ | [k0kubun](https://github.com/k0kubun)
13
+
14
+ ## v6.26.3 (24 January 2024)
15
+
16
+ ### Fixes
17
+
18
+ * Handle mailto links in `Cleaner#clean_url`
19
+ | [#813](https://github.com/bugsnag/bugsnag-ruby/pull/813)
20
+
4
21
  ## v6.26.2 (17 January 2024)
5
22
 
6
23
  ### Fixes
data/VERSION CHANGED
@@ -1 +1 @@
1
- 6.26.2
1
+ 6.26.4
@@ -30,25 +30,19 @@ module Bugsnag
30
30
 
31
31
  begin
32
32
  uri = URI(url)
33
- rescue URI::InvalidURIError
34
- pre_query_string, _query_string = url.split('?', 2)
35
-
36
- return "#{pre_query_string}?#{FILTERED}"
37
- end
38
33
 
39
- return url unless uri.query
40
-
41
- query_params = uri.query.split('&').map { |pair| pair.split('=') }
42
- query_params.map! do |key, val|
43
- if filters_match?(key)
44
- "#{key}=#{FILTERED}"
34
+ if uri.is_a?(URI::MailTo)
35
+ clean_mailto_url(url, uri)
45
36
  else
46
- "#{key}=#{val}"
37
+ clean_generic_url(url, uri)
47
38
  end
48
- end
39
+ rescue URI::InvalidURIError
40
+ pre_query_string, _query_string = url.split('?', 2)
49
41
 
50
- uri.query = query_params.join('&')
51
- uri.to_s
42
+ "#{pre_query_string}?#{FILTERED}"
43
+ rescue StandardError
44
+ FILTERED
45
+ end
52
46
  end
53
47
 
54
48
  ##
@@ -209,5 +203,33 @@ module Bugsnag
209
203
  scope.start_with?("#{scope_to_filter}.")
210
204
  end
211
205
  end
206
+
207
+ def clean_generic_url(original_url, uri)
208
+ return original_url unless uri.query
209
+
210
+ query_params = uri.query.split('&').map { |pair| pair.split('=') }
211
+
212
+ uri.query = filter_uri_parameter_array(query_params).join('&')
213
+ uri.to_s
214
+ end
215
+
216
+ def clean_mailto_url(original_url, uri)
217
+ return original_url unless uri.headers
218
+
219
+ # headers in mailto links can't contain square brackets so we replace
220
+ # filtered parameters with 'FILTERED' instead of '[FILTERED]'
221
+ uri.headers = filter_uri_parameter_array(uri.headers, 'FILTERED').join('&')
222
+ uri.to_s
223
+ end
224
+
225
+ def filter_uri_parameter_array(parameters, replacement = FILTERED)
226
+ parameters.map do |key, value|
227
+ if filters_match?(key)
228
+ "#{key}=#{replacement}"
229
+ else
230
+ "#{key}=#{value}"
231
+ end
232
+ end
233
+ end
212
234
  end
213
235
  end
@@ -466,8 +466,15 @@ module Bugsnag
466
466
  exception.detailed_message
467
467
  end
468
468
 
469
+ # the string returned by 'detailed_message' defaults to 'ASCII_8BIT' but
470
+ # is actually UTF-8 encoded; we can't convert the encoding normally as its
471
+ # internal encoding doesn't match its actual encoding
472
+ message.force_encoding(::Encoding::UTF_8) if message.encoding == ::Encoding::ASCII_8BIT
473
+
469
474
  # remove the class name to be consistent with Exception#message
470
- message.sub(" (#{class_name})", '')
475
+ message.sub!(" (#{class_name})".encode(message.encoding), "") rescue nil
476
+
477
+ message
471
478
  end
472
479
 
473
480
  def generate_raw_exceptions(exception)
@@ -3,7 +3,7 @@ require_relative 'code_extractor'
3
3
  module Bugsnag
4
4
  module Stacktrace
5
5
  # e.g. "org/jruby/RubyKernel.java:1264:in `catch'"
6
- BACKTRACE_LINE_REGEX = /^((?:[a-zA-Z]:)?[^:]+):(\d+)(?::in `([^']+)')?$/
6
+ BACKTRACE_LINE_REGEX = /^((?:[a-zA-Z]:)?[^:]+):(\d+)(?::in [`']([^']+)')?$/
7
7
 
8
8
  # e.g. "org.jruby.Ruby.runScript(Ruby.java:807)"
9
9
  JAVA_BACKTRACE_REGEX = /^(.*)\((.*)(?::([0-9]+))?\)$/
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bugsnag
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.26.2
4
+ version: 6.26.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Smith
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-17 00:00:00.000000000 Z
11
+ date: 2024-03-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -107,7 +107,7 @@ homepage: https://github.com/bugsnag/bugsnag-ruby
107
107
  licenses:
108
108
  - MIT
109
109
  metadata:
110
- changelog_uri: https://github.com/bugsnag/bugsnag-ruby/blob/v6.26.2/CHANGELOG.md
110
+ changelog_uri: https://github.com/bugsnag/bugsnag-ruby/blob/v6.26.4/CHANGELOG.md
111
111
  documentation_uri: https://docs.bugsnag.com/platforms/ruby/
112
112
  source_code_uri: https://github.com/bugsnag/bugsnag-ruby/
113
113
  rubygems_mfa_required: 'true'
@@ -126,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
126
  - !ruby/object:Gem::Version
127
127
  version: '0'
128
128
  requirements: []
129
- rubygems_version: 3.3.7
129
+ rubygems_version: 3.4.10
130
130
  signing_key:
131
131
  specification_version: 4
132
132
  summary: Ruby notifier for bugsnag.com