Skip to content

issue-468: Fix empty/whitespace string converting to array type - #469

Merged
nblumhardt merged 3 commits into
serilog:devfrom
gyurebalint-CID:fix/issue-468
Apr 9, 2026
Merged

issue-468: Fix empty/whitespace string converting to array type#469
nblumhardt merged 3 commits into
serilog:devfrom
gyurebalint-CID:fix/issue-468

Conversation

@gyurebalint-CID

Copy link
Copy Markdown
Contributor

Fixes #468

Problem

When a configuration value is an empty or whitespace-only string and the target type is an array (e.g. string[]), StringArgumentValue.ConvertTo falls through to parsing logic that produces unexpected results instead of returning an empty array.

Changes

StringArgumentValue.cs

  • Changed string.IsNullOrEmpty to string.IsNullOrWhiteSpace in the array-type guard, so that empty ("") and whitespace-only (" ") values both return an empty array.

StringArgumentValueTests.cs

Why IsNullOrWhiteSpace over IsNullOrEmpty?

A whitespace-only string like " " is not meaningful array content. Without this, it would fall through and produce an array containing a whitespace string — a subtle bug. No one intentionally configures " " as valid array input; if structured values are needed, JSON arrays should be used instead.

@gyurebalint

Copy link
Copy Markdown
Contributor

Hello everyone.
I think CI/CD needs approval for it to run.
If you have any comments, changes in mind, let me know and I'll adopt them.
Along with my other PR on a similar issue in this repo.
This is my private account, this PR was created with my work one.

@nblumhardt

Copy link
Copy Markdown
Member

Thanks @gyurebalint-CID 👍

@nblumhardt
nblumhardt merged commit 955b652 into serilog:dev Apr 9, 2026
1 check passed
@nblumhardt nblumhardt mentioned this pull request Apr 30, 2026
This was referenced Jun 15, 2026
SonnyRR pushed a commit to SonnyRR/stacked-deck-templates that referenced this pull request Jun 15, 2026
Updated
[Serilog.Settings.Configuration](https://github.com/serilog/serilog-settings-configuration)
from 10.0.0 to 10.0.1.

<details>
<summary>Release notes</summary>

_Sourced from [Serilog.Settings.Configuration's
releases](https://github.com/serilog/serilog-settings-configuration/releases)._

## 10.0.1

## What's Changed
* Support LevelAlias names in configuration parsing by @​mohammed-saalim
in serilog/serilog-settings-configuration#465
* Fix: Update ConditionalSink expression syntax in sample app by
@​gyurebalint in
serilog/serilog-settings-configuration#470
* issue-468: Fix empty/whitespace string converting to array type by
@​gyurebalint-CID in
serilog/serilog-settings-configuration#469
* Add WriteTo.FallbackChain and WriteTo.Fallible support in
configuration by @​ArieGato in
serilog/serilog-settings-configuration#474
* Fix/issue 441 by @​gyurebalint in
serilog/serilog-settings-configuration#471
* Support C# 13 params collections (IEnumerable<T>, List<T>) by
@​gyurebalint in
serilog/serilog-settings-configuration#478

## New Contributors
* @​mohammed-saalim made their first contribution in
serilog/serilog-settings-configuration#465
* @​gyurebalint made their first contribution in
serilog/serilog-settings-configuration#470
* @​gyurebalint-CID made their first contribution in
serilog/serilog-settings-configuration#469
* @​ArieGato made their first contribution in
serilog/serilog-settings-configuration#474

**Full Changelog**:
serilog/serilog-settings-configuration@v10.0.0...v10.0.1

Commits viewable in [compare
view](serilog/serilog-settings-configuration@v10.0.0...v10.0.1).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Serilog.Settings.Configuration&package-manager=nuget&previous-version=10.0.0&new-version=10.0.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
tetsuo13 pushed a commit to tetsuo13/TeamsStatusPub that referenced this pull request Jul 17, 2026
Updated [Serilog](https://github.com/serilog/serilog) from 4.3.1 to
4.4.0.

<details>
<summary>Release notes</summary>

_Sourced from [Serilog's
releases](https://github.com/serilog/serilog/releases)._

## 4.4.0

## What's Changed
* Emit SelfLog warning when extra arguments are provided by @​matantsach
in serilog/serilog#2222
* dont WriteQuotedJsonString for null by @​SimonCropp in
serilog/serilog#2216
* Pin System.Security.Cryptography.Xml to 8.0.3 in tests by @​ArieGato
in serilog/serilog#2232
* Route optional interfaces through OptionalInterfaceForwardingSink for
restricted sinks by @​ArieGato in
serilog/serilog#2234
* `SelfMetrics` by @​nblumhardt in
serilog/serilog#2237

## New Contributors
* @​matantsach made their first contribution in
serilog/serilog#2222
* @​ArieGato made their first contribution in
serilog/serilog#2232

**Full Changelog**:
serilog/serilog@v4.3.1...v4.4.0

Commits viewable in [compare
view](serilog/serilog@v4.3.1...v4.4.0).
</details>

Updated
[Serilog.Settings.Configuration](https://github.com/serilog/serilog-settings-configuration)
from 10.0.0 to 10.0.1.

<details>
<summary>Release notes</summary>

_Sourced from [Serilog.Settings.Configuration's
releases](https://github.com/serilog/serilog-settings-configuration/releases)._

## 10.0.1

## What's Changed
* Support LevelAlias names in configuration parsing by @​mohammed-saalim
in serilog/serilog-settings-configuration#465
* Fix: Update ConditionalSink expression syntax in sample app by
@​gyurebalint in
serilog/serilog-settings-configuration#470
* issue-468: Fix empty/whitespace string converting to array type by
@​gyurebalint-CID in
serilog/serilog-settings-configuration#469
* Add WriteTo.FallbackChain and WriteTo.Fallible support in
configuration by @​ArieGato in
serilog/serilog-settings-configuration#474
* Fix/issue 441 by @​gyurebalint in
serilog/serilog-settings-configuration#471
* Support C# 13 params collections (IEnumerable<T>, List<T>) by
@​gyurebalint in
serilog/serilog-settings-configuration#478

## New Contributors
* @​mohammed-saalim made their first contribution in
serilog/serilog-settings-configuration#465
* @​gyurebalint made their first contribution in
serilog/serilog-settings-configuration#470
* @​gyurebalint-CID made their first contribution in
serilog/serilog-settings-configuration#469
* @​ArieGato made their first contribution in
serilog/serilog-settings-configuration#474

**Full Changelog**:
serilog/serilog-settings-configuration@v10.0.0...v10.0.1

Commits viewable in [compare
view](serilog/serilog-settings-configuration@v10.0.0...v10.0.1).
</details>

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

InvalidCastException when enricher Args contains empty JSON array for params string[] parameter (regression in .NET 10)

3 participants