Bläddra i källkod

feat: use get() to ensure item exists (#1497)

tsk 3 veckor sedan
förälder
incheckning
3550f14a0b
1 ändrade filer med 24 tillägg och 4 borttagningar
  1. 24 4
      crates/cashu/src/nuts/nut11/mod.rs

+ 24 - 4
crates/cashu/src/nuts/nut11/mod.rs

@@ -56,6 +56,9 @@ pub enum Error {
     /// Unknown Kind
     #[error("Kind not found")]
     KindNotFound,
+    /// Tag value not found
+    #[error("Tag value not found")]
+    TagValueNotFound,
     /// HTLC hash invalid
     #[error("Invalid hash")]
     InvalidHash,
@@ -821,9 +824,21 @@ where
         let tag_kind = tag.first().map(TagKind::from).ok_or(Error::KindNotFound)?;
 
         match tag_kind {
-            TagKind::SigFlag => Ok(Tag::SigFlag(SigFlag::from_str(tag[1].as_ref())?)),
-            TagKind::NSigs => Ok(Tag::NSigs(tag[1].as_ref().parse()?)),
-            TagKind::Locktime => Ok(Tag::LockTime(tag[1].as_ref().parse()?)),
+            TagKind::SigFlag => Ok(Tag::SigFlag(SigFlag::from_str(
+                tag.get(1).ok_or(Error::TagValueNotFound)?.as_ref(),
+            )?)),
+            TagKind::NSigs => Ok(Tag::NSigs(
+                tag.get(1)
+                    .ok_or(Error::TagValueNotFound)?
+                    .as_ref()
+                    .parse()?,
+            )),
+            TagKind::Locktime => Ok(Tag::LockTime(
+                tag.get(1)
+                    .ok_or(Error::TagValueNotFound)?
+                    .as_ref()
+                    .parse()?,
+            )),
             TagKind::Refund => {
                 let pubkeys = tag
                     .iter()
@@ -842,7 +857,12 @@ where
 
                 Ok(Self::PubKeys(pubkeys))
             }
-            TagKind::NSigsRefund => Ok(Tag::NSigsRefund(tag[1].as_ref().parse()?)),
+            TagKind::NSigsRefund => Ok(Tag::NSigsRefund(
+                tag.get(1)
+                    .ok_or(Error::TagValueNotFound)?
+                    .as_ref()
+                    .parse()?,
+            )),
             TagKind::Custom(name) => {
                 let tags = tag
                     .iter()