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