This project might be open to known security vulnerabilities, which can be prevented by tightening the version range of affected dependencies. Find detailed information at the bottom.

Crate rust_decimal

Dependencies

(7 total, 4 outdated, 1 possibly insecure)

CrateRequiredLatestStatus
 byteorder^1.31.5.0up to date
 bytes^0.51.6.0out of date
 diesel ⚠️^1.42.1.5out of date
 num-traits^0.20.2.18up to date
 postgres^0.170.19.7out of date
 serde^1.01.0.198up to date
 tokio-postgres^0.50.7.10out of date

Dev dependencies

(5 total, 2 outdated, 1 possibly insecure)

CrateRequiredLatestStatus
 futures^0.30.3.30up to date
 rand^0.70.8.5out of date
 serde_derive^1.01.0.198up to date
 serde_json^1.01.0.116up to date
 tokio ⚠️^0.21.37.0out of date

Security Vulnerabilities

diesel: Fix a use-after-free bug in diesels Sqlite backend

RUSTSEC-2021-0037

We've misused sqlite3_column_name. The SQLite documentation states that the following:

The returned string pointer is valid until either the prepared statement is destroyed by sqlite3_finalize() or until the statement is automatically reprepared by the first call to sqlite3_step() for a particular run or until the next call to sqlite3_column_name() or sqlite3_column_name16() on the same column.

As part of our query_by_name infrastructure we've first received all field names for the prepared statement and stored them as string slices for later use. After that we called sqlite3_step() for the first time, which invalids the pointer and therefore the stored string slice.

tokio: Data race when sending and receiving after closing a `oneshot` channel

RUSTSEC-2021-0124

If a tokio::sync::oneshot channel is closed (via the oneshot::Receiver::close method), a data race may occur if the oneshot::Sender::send method is called while the corresponding oneshot::Receiver is awaited or calling try_recv.

When these methods are called concurrently on a closed channel, the two halves of the channel can concurrently access a shared memory location, resulting in a data race. This has been observed to cause memory corruption.

Note that the race only occurs when both halves of the channel are used after the Receiver half has called close. Code where close is not used, or where the Receiver is not awaited and try_recv is not called after calling close, is not affected.

See tokio#4225 for more details.