From bb11d9d67183c1a1843a0d9f5335f145365aa2e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Sa=C5=82aban?= Date: Sun, 7 Jan 2018 01:26:30 +0100 Subject: [PATCH] Add sanity check --- monero/numbers.py | 4 +++- tests/numbers.py | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/monero/numbers.py b/monero/numbers.py index f7b7bc2..6e09241 100644 --- a/monero/numbers.py +++ b/monero/numbers.py @@ -34,7 +34,9 @@ class PaymentID(object): payment_id = int(payment_id, 16) elif not isinstance(payment_id, _integer_types): raise TypeError("payment_id must be either int or hexadecimal str or bytes, " - "is %r" % payment_id) + "is {0}".format(type(payment_id))) + if payment_id.bit_length() > 256: + raise ValueError("payment_id {0} is more than 256 bits long".format(payment_id)) self._payment_id = payment_id def is_short(self): diff --git a/tests/numbers.py b/tests/numbers.py index 8505e60..f48460a 100644 --- a/tests/numbers.py +++ b/tests/numbers.py @@ -36,3 +36,4 @@ class NumbersTestCase(unittest.TestCase): self.assertEqual(pid, 0xa1234567812345678) self.assertEqual(pid, '00000000000000000000000000000000000000000000000a1234567812345678') self.assertEqual(PaymentID(pid), pid) + self.assertRaises(ValueError, PaymentID, 2**256+1)