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:
parent
afd8112e25
commit
83805c66e5
2 changed files with 23 additions and 1 deletions
|
@ -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(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -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")]
|
||||||
|
|
Loading…
Reference in a new issue