summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimo Kösters <timo@koesters.xyz>2023-08-01 11:25:06 +0000
committerTimo Kösters <timo@koesters.xyz>2023-08-01 11:25:06 +0000
commitd2bfcb018ed40eb91b6f7dd31727e24f2b992727 (patch)
tree09d35cee24549cd5f857b0cfaa744fc3ed47d3d6
parent08f0f17ff7709ddf02de5e069c1e6dbdaef7f2e5 (diff)
parent83805c66e509b39b5d17d1a8d5033d9593711e84 (diff)
downloadconduit-d2bfcb018ed40eb91b6f7dd31727e24f2b992727.zip
Merge branch 'error-leak-fix' into 'next'
sanitise potentially sensitive errors See merge request famedly/conduit!523
-rw-r--r--src/api/server_server.rs2
-rw-r--r--src/utils/error.rs22
2 files changed, 23 insertions, 1 deletions
diff --git a/src/api/server_server.rs b/src/api/server_server.rs
index 2220c4d..e04d63d 100644
--- a/src/api/server_server.rs
+++ b/src/api/server_server.rs
@@ -927,7 +927,7 @@ pub async fn send_transaction_message_route(
Ok(send_transaction_message::v1::Response {
pdus: resolved_map
.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(),
})
}
diff --git a/src/utils/error.rs b/src/utils/error.rs
index 5ffb38c..6e88cf5 100644
--- a/src/utils/error.rs
+++ b/src/utils/error.rs
@@ -138,6 +138,28 @@ impl Error {
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")]