From 1a062f0946d79c25eb4ccc1bde55fc54d787deb4 Mon Sep 17 00:00:00 2001 From: coffeepots Date: Thu, 17 May 2018 19:51:33 +0100 Subject: [PATCH] Add check for UInt256 strings being too long --- eth-rpc/server/servertypes.nim | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/eth-rpc/server/servertypes.nim b/eth-rpc/server/servertypes.nim index 711f01f..263d2f3 100644 --- a/eth-rpc/server/servertypes.nim +++ b/eth-rpc/server/servertypes.nim @@ -79,7 +79,10 @@ proc fromJson(n: JsonNode, argName: string, result: var byte) = proc fromJson(n: JsonNode, argName: string, result: var UInt256) = # expects base 16 string, starting with "0x" n.kind.expect(JString, argName) - result = n.getStr().parse(StUint[256], 16) # TODO: Handle errors + let hexStr = n.getStr() + if hexStr.len > 64 + 2: # including "0x" + raise newException(ValueError, "Parameter \"" & argName & "\" value too long for UInt256: " & $hexStr.len) + result = hexStr.parse(StUint[256], 16) # TODO: Handle errors proc fromJson(n: JsonNode, argName: string, result: var float) = n.kind.expect(JFloat, argName)