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 rocket_sync_db_pools

Dependencies

(12 total, 4 outdated, 2 possibly insecure)

CrateRequiredLatestStatus
 diesel ⚠️^1.02.1.6out of date
 memcache^0.150.17.2out of date
 postgres^0.190.19.7up to date
 r2d2^0.80.8.10up to date
 r2d2-memcache^0.60.6.0up to date
 r2d2_postgres^0.180.18.1up to date
 r2d2_sqlite^0.180.24.0out of date
 rocket^0.5.0-rc.20.5.0up to date
 rocket_sync_db_pools_codegen^0.1.0-rc.20.1.0up to date
 rusqlite^0.250.31.0out of date
 serde^1.01.0.202up to date
 tokio ⚠️^1.6.11.37.0maybe insecure

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: reject_remote_clients Configuration corruption

RUSTSEC-2023-0001

On Windows, configuring a named pipe server with pipe_mode will force ServerOptions::reject_remote_clients as false.

This drops any intended explicit configuration for the reject_remote_clients that may have been set as true previously.

The default setting of reject_remote_clients is normally true meaning the default is also overridden as false.

Workarounds

Ensure that pipe_mode is set first after initializing a ServerOptions. For example:

let mut opts = ServerOptions::new();
opts.pipe_mode(PipeMode::Message);
opts.reject_remote_clients(true);