Skip to content

Commit

Permalink
rust-i18n-support: Use-after-free when setting the locale (#1855)
Browse files Browse the repository at this point in the history
  • Loading branch information
Kijewski authored Jan 23, 2024
1 parent c88b5f3 commit b1db690
Showing 1 changed file with 30 additions and 0 deletions.
30 changes: 30 additions & 0 deletions crates/rust-i18n-support/RUSTSEC-0000-0000.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
```toml
[advisory]
id = "RUSTSEC-0000-0000"
package = "rust-i18n-support"
date = "2024-01-19"
url = "https://github.com/longbridgeapp/rust-i18n/issues/71"
informational = "unsound"
categories = ["memory-exposure"]
references = [
"https://github.com/longbridgeapp/rust-i18n/pull/72",
"https://github.com/longbridgeapp/rust-i18n/releases/tag/v3.0.1",
]

[affected]
functions = { "rust_i18n_support::AtomicStr::as_str" = ["< 3.0.1, >= 3.0.0"] }

[versions]
patched = [">= 3.0.1"]
unaffected = ["< 3.0.0"]
```

# Use-after-free when setting the locale

Version 3.0.0 introduced an `AtomicStr` type, that is used to store the current locale.
It stores the locale as a raw pointer to an `Arc<String>`.
The locale can be read with `AtomicStr::as_str()`.
`AtomicStr::as_str()` does not increment the usage counter of the `Arc`.

If the locale is changed in one thread, another thread can have a stale -- possibly already freed --
reference to the stored string.

0 comments on commit b1db690

Please # to comment.