From 0f1ef2f5199de85825abfc87d54b207621c2a92b Mon Sep 17 00:00:00 2001 From: Carl Wallace Date: Wed, 27 Nov 2019 15:09:53 -0500 Subject: [PATCH] Make anonymous field of CHUID struct public. Remove spurious -2 instances inside Transaction::transfer_data (the Response object is already eating the status words) --- src/chuid.rs | 2 +- src/transaction.rs | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/chuid.rs b/src/chuid.rs index 0bfbdce..b3ca6c4 100644 --- a/src/chuid.rs +++ b/src/chuid.rs @@ -57,7 +57,7 @@ const CHUID_TMPL: &[u8] = &[ /// Cardholder Unique Identifier (CHUID) #[derive(Copy, Clone, Debug)] -pub struct CHUID([u8; YKPIV_CARDID_SIZE]); +pub struct CHUID(pub [u8; YKPIV_CARDID_SIZE]); impl CHUID { /// Generate a random Cardholder Unique Identifier (CHUID) diff --git a/src/transaction.rs b/src/transaction.rs index 4af147d..6e174b6 100644 --- a/src/transaction.rs +++ b/src/transaction.rs @@ -421,17 +421,17 @@ impl<'tx> Transaction<'tx> { sw = response.status_words().code(); - if out_data.len() - response.data().len() - 2 > max_out { + if 0 != out_data.len() && (out_data.len() - response.data().len() > max_out) { error!( "output buffer too small: wanted to write {}, max was {}", - out_data.len() - response.data().len() - 2, + out_data.len() - response.data().len(), max_out ); return Err(Error::SizeError); } - out_data.extend_from_slice(&response.data()[..response.data().len() - 2]); + out_data.extend_from_slice(&response.data()[..response.data().len()]); in_offset += this_size; if in_offset >= in_data.len() { @@ -452,17 +452,17 @@ impl<'tx> Transaction<'tx> { return Ok(Response::new(sw.into(), vec![])); } - if out_data.len() + response.data().len() - 2 > max_out { + if out_data.len() + response.data().len() > max_out { error!( "output buffer too small: wanted to write {}, max was {}", - out_data.len() + response.data().len() - 2, + out_data.len() + response.data().len(), max_out ); return Err(Error::SizeError); } - out_data.extend_from_slice(&response.data()[..response.data().len() - 2]); + out_data.extend_from_slice(&response.data()[..response.data().len()]); } Ok(Response::new(sw.into(), out_data))