diff --git a/src/Capability.hs b/src/Capability.hs index 83bee4f3d8b71ef99c20533c4d05e260b831e638..156b35c66a42ed0d5371d54d4d22fb97717ef0cb 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 =