From 55d72a8876b3c9f5531a333a3953c832bd6102eb Mon Sep 17 00:00:00 2001 From: Abit Date: Sun, 4 Sep 2022 01:11:06 +0200 Subject: [PATCH] In to_long(), validate return of Long.fromString() --- lib/serializer/src/SerializerValidation.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/serializer/src/SerializerValidation.js b/lib/serializer/src/SerializerValidation.js index 9aae09fb..f0f16a51 100644 --- a/lib/serializer/src/SerializerValidation.js +++ b/lib/serializer/src/SerializerValidation.js @@ -109,10 +109,20 @@ var _my = { } this.no_overflow64(value, field_name, unsigned); + // BigInteger#isBigInteger https://github.com/cryptocoinjs/bigi/issues/20 + // (code copied from no_overflow64) + if (value.t !== undefined && value.s !== undefined) { + value = value.toString(); + } if (typeof value === "number") { value = "" + value; } - return Long.fromString(value, unsigned); + value = value.trim(); + var long_value = Long.fromString(value, unsigned); + if (long_value.toString() !== value) { + throw new Error(`Unable to safely convert ${field_name} ${value} to long`); + } + return long_value; }, to_string(value, field_name = "") {