Browse Source

Check integer ranges are safe

master
Luke Childs 6 years ago
parent
commit
5d8e16c080
  1. 6
      src/index.js
  2. 4
      test/unit.js

6
src/index.js

@ -1,3 +1,5 @@
const {MIN_SAFE_INTEGER, MAX_SAFE_INTEGER} = Number;
const byteRange = (bytes, opts = {signed: false}) => {
if (bytes < 1 || !Number.isSafeInteger(bytes)) {
throw new TypeError('`bytes` must be a positive integer');
@ -12,6 +14,10 @@ const byteRange = (bytes, opts = {signed: false}) => {
max -= offset;
}
if (min < MIN_SAFE_INTEGER || max > MAX_SAFE_INTEGER) {
throw new RangeError('This range connot be safely calculated in JavaScript');
}
return [min, max];
};

4
test/unit.js

@ -36,3 +36,7 @@ test('byteRange() throws invalid byte values', t => {
t.throws(() => byteRange(0));
t.throws(() => byteRange(1.5));
});
test('byteRange() throws on unsafe ranges', t => {
t.throws(() => byteRange(100));
});

Loading…
Cancel
Save