bugsnag 6.26.2 → 6.26.4

Sign up to get free protection for your applications and to get access to all the features.
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