From 4bb20823fe5f7283336a4837e1999730b85ad4d9 Mon Sep 17 00:00:00 2001 From: Andrea Leopardi Date: Mon, 15 Sep 2025 10:23:11 +0200 Subject: [PATCH 1/3] Fix safe JSON encoding of improper lists --- lib/sentry/client.ex | 26 +++++++++++++++----------- test/sentry/client_test.exs | 4 +++- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/lib/sentry/client.ex b/lib/sentry/client.ex index dc924bd8..98b06191 100644 --- a/lib/sentry/client.ex +++ b/lib/sentry/client.ex @@ -361,18 +361,22 @@ defmodule Sentry.Client do end defp sanitize_non_jsonable_value(value, json_library) when is_list(value) do - {mapped, changed?} = - Enum.map_reduce(value, _changed? = false, fn value, changed? -> - case sanitize_non_jsonable_value(value, json_library) do - :unchanged -> {value, changed?} - {:changed, value} -> {value, true} - end - end) - - if changed? do - {:changed, mapped} + if List.improper?(value) do + {:changed, inspect(value)} else - :unchanged + {mapped, changed?} = + Enum.map_reduce(value, _changed? = false, fn value, changed? -> + case sanitize_non_jsonable_value(value, json_library) do + :unchanged -> {value, changed?} + {:changed, value} -> {value, true} + end + end) + + if changed? do + {:changed, mapped} + else + :unchanged + end end end diff --git a/test/sentry/client_test.exs b/test/sentry/client_test.exs index 70e7a9bb..74b38e47 100644 --- a/test/sentry/client_test.exs +++ b/test/sentry/client_test.exs @@ -61,7 +61,8 @@ defmodule Sentry.ClientTest do bool: true, null: nil, int: 2, - map: %{bool: false} + map: %{bool: false}, + improper_list: [1 | 2] }, user: %{id: "valid-ID", email: {"user", "@example.com"}}, tags: %{valid: "yes", tokens: MapSet.new([1])}, @@ -78,6 +79,7 @@ defmodule Sentry.ClientTest do assert rendered.extra.null == nil assert rendered.extra.int == 2 assert rendered.extra.map.bool == false + assert rendered.extra.improper_list == "[1 | 2]" assert rendered.user.id == "valid-ID" assert rendered.user.email == ~s({"user", "@example.com"}) From 342cd00c33854ddfa057d98d84e20312dece5414 Mon Sep 17 00:00:00 2001 From: Andrea Leopardi Date: Thu, 18 Sep 2025 13:05:41 +0200 Subject: [PATCH 2/3] FIXUP --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 54b3de07..4a374bd4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## 11.0.4 + +### Bug fixes + +- Correctly sanitize improper lists in Sentry context (attached to any event). + ## 11.0.3 #### Various improvements From 69fa1f0208d3a09ac85743a0676bafb8a8a27725 Mon Sep 17 00:00:00 2001 From: Andrea Leopardi Date: Thu, 18 Sep 2025 13:47:42 +0200 Subject: [PATCH 3/3] FIXUP --- CHANGELOG.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a374bd4..2751acde 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,6 @@ -## 11.0.4 +## Unreleased -### Bug fixes - -- Correctly sanitize improper lists in Sentry context (attached to any event). +- Fix safe JSON encoding of improper lists ([#938](https://github.com/getsentry/sentry-elixir/pull/938)) ## 11.0.3