From d8cc36dd0c466e04e4cce0f41fe2cc04c8003eaf Mon Sep 17 00:00:00 2001 From: Saber Haj Rabiee Date: Thu, 4 Mar 2021 03:20:26 -0800 Subject: [PATCH] clone-free serde Value deserialization (#178) * clone-free serde Value deserialization --- src/validation.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/validation.rs b/src/validation.rs index f4f3d0e..15f4c5d 100644 --- a/src/validation.rs +++ b/src/validation.rs @@ -152,14 +152,15 @@ pub fn validate(claims: &Map, options: &Validation) -> Result<()> if let Some(ref correct_aud) = options.aud { if let Some(aud) = claims.get("aud") { match aud { - Value::String(aud_found) => { - if !correct_aud.contains(aud_found) { + Value::String(aud) => { + if !correct_aud.contains(aud) { return Err(new_error(ErrorKind::InvalidAudience)); } } Value::Array(_) => { - let provided_aud: HashSet = from_value(aud.clone())?; - if provided_aud.intersection(correct_aud).next().is_none() { + use serde::Deserialize; + let aud = HashSet::::deserialize(aud)?; + if aud.intersection(correct_aud).next().is_none() { return Err(new_error(ErrorKind::InvalidAudience)); } }