From de3b9a665b8da25d98fd13d013bec86d27b1edea Mon Sep 17 00:00:00 2001 From: Lapo Luchini Date: Tue, 12 Aug 2014 09:11:51 +0000 Subject: [PATCH] Off-by-1 error on INTEGER values made entirely of 00s or FFs. Closes #8 on GitHub. --- asn1.js | 4 ++-- test.js | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/asn1.js b/asn1.js index 2a92fda..7fc3697 100644 --- a/asn1.js +++ b/asn1.js @@ -134,8 +134,8 @@ Stream.prototype.parseInteger = function (start, end) { len, s = ''; // skip unuseful bits (not allowed in DER) - while (v == pad && start < end) - v = this.get(++start); + while (v == pad && ++start < end) + v = this.get(start); len = end - start; if (len === 0) return neg ? -1 : 0; diff --git a/test.js b/test.js index 1f87bf5..1221d8e 100755 --- a/test.js +++ b/test.js @@ -32,6 +32,8 @@ tests = [ ['0208FFFFFFFFFFFFFC18', '-1000', 'Negative 1000 (8)'], ['0210FFFFFFFFFFFFFFFFFFFFFFFFFFFFFC18', '-1000', 'Negative 1000 (16)'], ['0203800001', '-8388607', 'Negative 8388607'], + ['02020000', '0', 'Zero (2)'], + ['0204FFFFFFFF', '-1', 'Negative 1 (4)'], ]; tests.forEach(function (t) { -- 2.51.2