1
0
Fork 0
mirror of https://gitlab.com/famedly/conduit.git synced 2024-12-26 07:54:21 +01:00

sanitise potentially sensitive errors

prevents errors like DB or I/O errors from leaking filesystem paths

Co-authored-by: infamous <ehuff007@gmail.com>
Signed-off-by: girlbossceo <june@girlboss.ceo>
This commit is contained in:
girlbossceo 2023-07-30 17:30:16 +00:00
parent afd8112e25
commit 83805c66e5
2 changed files with 23 additions and 1 deletions

View file

@ -927,7 +927,7 @@ pub async fn send_transaction_message_route(
Ok(send_transaction_message::v1::Response { Ok(send_transaction_message::v1::Response {
pdus: resolved_map pdus: resolved_map
.into_iter() .into_iter()
.map(|(e, r)| (e, r.map_err(|e| e.to_string()))) .map(|(e, r)| (e, r.map_err(|e| e.sanitized_error())))
.collect(), .collect(),
}) })
} }

View file

@ -138,6 +138,28 @@ impl Error {
status_code, status_code,
})) }))
} }
/// Sanitizes public-facing errors that can leak sensitive information.
pub fn sanitized_error(&self) -> String {
let db_error = String::from("Database or I/O error occurred.");
match self {
#[cfg(feature = "sled")]
Self::SledError { .. } => db_error,
#[cfg(feature = "sqlite")]
Self::SqliteError { .. } => db_error,
#[cfg(feature = "persy")]
Self::PersyError { .. } => db_error,
#[cfg(feature = "heed")]
Self::HeedError => db_error,
#[cfg(feature = "rocksdb")]
Self::RocksDbError { .. } => db_error,
Self::IoError { .. } => db_error,
Self::BadConfig { .. } => db_error,
Self::BadDatabase { .. } => db_error,
_ => self.to_string(),
}
}
} }
#[cfg(feature = "persy")] #[cfg(feature = "persy")]