From 74ef82e4c7800869b651da8edcf37c9b829624ec Mon Sep 17 00:00:00 2001 From: Jean-Paul Calderone <exarkun@twistedmatrix.com> Date: Wed, 1 Feb 2023 09:57:23 -0500 Subject: [PATCH] Factor the mistake of using `decimal` into one place --- src/Capability.hs | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/Capability.hs b/src/Capability.hs index 83bee4f..156b35c 100644 --- a/src/Capability.hs +++ b/src/Capability.hs @@ -68,6 +68,11 @@ showT = T.pack . show showBase32 :: B.ByteString -> T.Text showBase32 = T.toLower . B.encodeBase32Unpadded +-- XXXX decimal doesn't check for overflow. Replace it with something that +-- does. +natural :: Num n => Parser n +natural = decimal + instance Show Verifier where show Verifier{storageIndex, fingerprint, required, total, size} = T.unpack $ @@ -183,13 +188,11 @@ pVerifier = <* char ':' <*> pBase32 rfc3548Alphabet 256 <* char ':' - -- XXXX decimal doesn't check for overflow. Replace it with something that - -- does. - <*> decimal + <*> natural <* char ':' - <*> decimal + <*> natural <* char ':' - <*> decimal + <*> natural -- | A parser combinator for parsing a CHK read capability. pReader :: Parser Reader @@ -202,13 +205,11 @@ pReader = <* char ':' <*> pBase32 rfc3548Alphabet 256 <* char ':' - -- XXXX decimal doesn't check for overflow. Replace it with something that - -- does. - <*> decimal + <*> natural <* char ':' - <*> decimal + <*> natural <* char ':' - <*> decimal + <*> natural makeReader :: AESKey128 -> B.ByteString -> Word16 -> Word16 -> Integer -> Reader makeReader readKey fingerprint required total size = -- GitLab