From 16c0196b1d3a97abd00e6b52615a78b7ac0ad11c Mon Sep 17 00:00:00 2001 From: Julien Cretin Date: Fri, 4 Dec 2020 14:42:16 +0100 Subject: [PATCH] Check global counter length --- src/ctap/storage.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/ctap/storage.rs b/src/ctap/storage.rs index 0f1c73f..a10f2eb 100644 --- a/src/ctap/storage.rs +++ b/src/ctap/storage.rs @@ -294,10 +294,11 @@ impl PersistentStore { /// Returns the global signature counter. pub fn global_signature_counter(&self) -> Result { - Ok(match self.store.find(key::GLOBAL_SIGNATURE_COUNTER)? { - None => 0, - Some(value) => u32::from_ne_bytes(*array_ref!(&value, 0, 4)), - }) + match self.store.find(key::GLOBAL_SIGNATURE_COUNTER)? { + None => Ok(0), + Some(value) if value.len() == 4 => Ok(u32::from_ne_bytes(*array_ref!(&value, 0, 4))), + Some(_) => Err(Ctap2StatusCode::CTAP2_ERR_VENDOR_INVALID_PERSISTENT_STORAGE), + } } /// Increments the global signature counter.