Skip to content

Commit 5d98b7b

Browse files
authored
Merge pull request #183 from ionut-arm/format-log
Improve log security
2 parents 959017c + 3600134 commit 5d98b7b

File tree

14 files changed

+279
-146
lines changed

14 files changed

+279
-146
lines changed

src/front/domain_socket.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,13 +88,13 @@ impl Listen for DomainSocketListener {
8888
match stream_result {
8989
Ok((stream, _)) => {
9090
if let Err(err) = stream.set_read_timeout(Some(self.timeout)) {
91-
error!("Failed to set read timeout ({})", err);
91+
format_error!("Failed to set read timeout", err);
9292
None
9393
} else if let Err(err) = stream.set_write_timeout(Some(self.timeout)) {
94-
error!("Failed to set write timeout ({})", err);
94+
format_error!("Failed to set write timeout", err);
9595
None
9696
} else if let Err(err) = stream.set_nonblocking(false) {
97-
error!("Failed to set stream as blocking ({})", err);
97+
format_error!("Failed to set stream as blocking", err);
9898
None
9999
} else {
100100
Some(Box::from(stream))
@@ -104,7 +104,7 @@ impl Listen for DomainSocketListener {
104104
// Check if the error is because no connections are currently present.
105105
if err.kind() != ErrorKind::WouldBlock {
106106
// Only log the real errors.
107-
error!("Failed to connect with a UnixStream ({})", err);
107+
format_error!("Failed to connect with a UnixStream", err);
108108
}
109109
None
110110
}

src/front/front_end.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use crate::authenticators::Authenticate;
88
use crate::back::dispatcher::Dispatcher;
99
use derivative::Derivative;
10-
use log::{error, info, trace};
10+
use log::{info, trace};
1111
use parsec_interface::requests::AuthType;
1212
use parsec_interface::requests::ResponseStatus;
1313
use parsec_interface::requests::{Request, Response};
@@ -47,11 +47,11 @@ impl FrontEndHandler {
4747
let request = match Request::read_from_stream(&mut stream, self.body_len_limit) {
4848
Ok(request) => request,
4949
Err(status) => {
50-
error!("Failed to read request; status: {}", status);
50+
format_error!("Failed to read request", status);
5151

5252
let response = Response::from_status(status);
5353
if let Err(status) = response.write_to_stream(&mut stream) {
54-
error!("Failed to write response; status: {}", status);
54+
format_error!("Failed to write response", status);
5555
}
5656
return;
5757
}
@@ -85,7 +85,7 @@ impl FrontEndHandler {
8585
// Write bytes to stream
8686
match response.write_to_stream(&mut stream) {
8787
Ok(_) => info!("Request handled successfully"),
88-
Err(err) => error!("Failed to send response; error: {}", err),
88+
Err(err) => format_error!("Failed to send response", err),
8989
}
9090
}
9191
}

src/key_info_managers/mod.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
//! means but it has to be persistent.
99
1010
use crate::authenticators::ApplicationName;
11-
use log::error;
1211
use parsec_interface::operations::psa_key_attributes::Attributes;
1312
use parsec_interface::requests::{ProviderID, ResponseStatus};
1413
use serde::{Deserialize, Serialize};
@@ -75,8 +74,8 @@ impl KeyTriple {
7574
/// Converts the error string returned by the ManageKeyInfo methods to
7675
/// ResponseStatus::KeyInfoManagerError.
7776
pub fn to_response_status(error_string: String) -> ResponseStatus {
78-
error!(
79-
"Converting error string \"{}\" to ResponseStatus:KeyInfoManagerError.",
77+
format_error!(
78+
"Converting error to ResponseStatus:KeyInfoManagerError",
8079
error_string
8180
);
8281
ResponseStatus::KeyInfoManagerError

src/key_info_managers/on_disk_manager/mod.rs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -187,12 +187,14 @@ impl OnDiskKeyInfoManager {
187187
for app_name_dir_path in list_dirs(&mappings_dir_path)?.iter() {
188188
for provider_dir_path in list_dirs(&app_name_dir_path)?.iter() {
189189
for key_name_file_path in list_files(&provider_dir_path)?.iter() {
190-
info!("Found mapping file: {:?}.", key_name_file_path);
190+
if crate::utils::GlobalConfig::log_error_details() {
191+
info!("Found mapping file: {:?}.", key_name_file_path);
192+
}
191193
let mut key_info = Vec::new();
192194
let mut key_info_file = File::open(&key_name_file_path)?;
193195
let _ = key_info_file.read_to_end(&mut key_info)?;
194196
let key_info = bincode::deserialize(&key_info[..]).or_else(|e| {
195-
error!("Error deserializing key info ({}).", e);
197+
format_error!("Error deserializing key info", e);
196198
Err(Error::new(ErrorKind::Other, "error deserializing key info"))
197199
})?;
198200
match base64_data_triple_to_key_triple(
@@ -210,13 +212,20 @@ impl OnDiskKeyInfoManager {
210212
let _ = key_store.insert(key_triple, key_info);
211213
}
212214
Err(string) => {
213-
error!("Failed to convert the mapping path found to an UTF-8 string (error: {}).", string);
215+
format_error!(
216+
"Failed to convert the mapping path found to an UTF-8 string",
217+
string
218+
);
214219
}
215220
}
216221
}
217222
}
218223
}
219224

225+
if !crate::utils::GlobalConfig::log_error_details() {
226+
info!("Found {} mapping files", key_store.len());
227+
}
228+
220229
Ok(OnDiskKeyInfoManager {
221230
key_store,
222231
mappings_dir_path,
@@ -240,7 +249,7 @@ impl OnDiskKeyInfoManager {
240249

241250
let mut mapping_file = fs::File::create(&key_name_file_path)?;
242251
mapping_file.write_all(&bincode::serialize(key_info).or_else(|e| {
243-
error!("Error serializing key info ({}).", e);
252+
format_error!("Error serializing key info", e);
244253
Err(Error::new(ErrorKind::Other, "error serializing key info"))
245254
})?)
246255
}

src/providers/core_provider/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
//! aiding clients in discovering the capabilities offered by their underlying
77
//! platform.
88
use super::Provide;
9-
use log::{error, trace};
9+
use log::trace;
1010
use parsec_interface::operations::list_providers::ProviderInfo;
1111
use parsec_interface::operations::{list_opcodes, list_providers, ping};
1212
use parsec_interface::requests::{Opcode, ProviderID, ResponseStatus, Result};
@@ -73,7 +73,7 @@ pub struct CoreProviderBuilder {
7373
impl CoreProviderBuilder {
7474
pub fn new() -> std::io::Result<Self> {
7575
let crate_version: Version = Version::from_str(version!()).or_else(|e| {
76-
error!("Error parsing the crate version: {}.", e);
76+
format_error!("Error parsing the crate version", e);
7777
Err(Error::new(
7878
ErrorKind::InvalidData,
7979
"crate version number has invalid format",

src/providers/pkcs11_provider/asym_sign.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,9 @@ impl Pkcs11Provider {
7171
};
7272

7373
let session = Session::new(self, ReadWriteSession::ReadWrite)?;
74-
info!("Asymmetric sign in session {}", session.session_handle());
74+
if crate::utils::GlobalConfig::log_error_details() {
75+
info!("Asymmetric sign in session {}", session.session_handle());
76+
}
7577

7678
let key = self.find_key(session.session_handle(), key_id, KeyPairType::PrivateKey)?;
7779
info!("Located signing key.");
@@ -96,7 +98,7 @@ impl Pkcs11Provider {
9698
}
9799
}
98100
Err(e) => {
99-
error!("Failed to initialize signing operation. Error: {}", e);
101+
format_error!("Failed to initialize signing operation", e);
100102
Err(utils::to_response_status(e))
101103
}
102104
}
@@ -155,7 +157,9 @@ impl Pkcs11Provider {
155157
};
156158

157159
let session = Session::new(self, ReadWriteSession::ReadWrite)?;
158-
info!("Asymmetric verify in session {}", session.session_handle());
160+
if crate::utils::GlobalConfig::log_error_details() {
161+
info!("Asymmetric verify in session {}", session.session_handle());
162+
}
159163

160164
let key = self.find_key(session.session_handle(), key_id, KeyPairType::PublicKey)?;
161165
info!("Located public key.");
@@ -183,7 +187,7 @@ impl Pkcs11Provider {
183187
}
184188
}
185189
Err(e) => {
186-
error!("Failed to initialize verifying operation. Error: {}", e);
190+
format_error!("Failed to initialize verifying operation", e);
187191
Err(utils::to_response_status(e))
188192
}
189193
}

0 commit comments

Comments
 (0)