Skip to content

Commit

Permalink
fix hexToNumber & hexToNumberString prefix validation
Browse files Browse the repository at this point in the history
  • Loading branch information
yzevm authored and cgewecke committed Oct 1, 2019
1 parent 35b2e22 commit b4c8112
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 6 deletions.
8 changes: 8 additions & 0 deletions packages/web3-utils/src/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,10 @@ var hexToNumber = function (value) {
return value;
}

if (_.isString(value) && !isHexStrict(value)) {
throw new Error('Given value "'+value+'" is not a valid hex string.');
}

return toBN(value).toNumber();
};

Expand All @@ -244,6 +248,10 @@ var hexToNumber = function (value) {
var hexToNumberString = function (value) {
if (!value) return value;

if (_.isString(value) && !isHexStrict(value)) {
throw new Error('Given value "'+value+'" is not a valid hex string.');
}

return toBN(value).toString(10);
};

Expand Down
18 changes: 13 additions & 5 deletions test/utils.toNumber.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,22 @@ var assert = require('assert');
var utils = require('../packages/web3-utils');

describe('lib/utils/utils', function () {
describe('hexToNumberString', function () {
describe('hexToNumber', function () {
it('should return the correct value', function () {

assert.equal(utils.hexToNumberString("0x3e8"), 1000);
assert.equal(utils.hexToNumberString('0x1f0fe294a36'), 2134567897654);
assert.equal(utils.hexToNumber("0x3e8"), 1000);
assert.equal(utils.hexToNumber('0x1f0fe294a36'), 2134567897654);
// allow compatiblity
assert.equal(utils.hexToNumberString(100000), 100000);
assert.equal(utils.hexToNumberString('100000'), 100000);
assert.equal(utils.hexToNumber(100000), 100000);
});

it('should validate hex strings', function() {
try {
utils.hexToNumber('100000');
assert.fail();
} catch (error){
assert(error.message.includes('is not a valid hex string'))
}
})
});
});
10 changes: 9 additions & 1 deletion test/utils.toNumberString.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,15 @@ describe('lib/utils/utils', function () {
assert.equal(utils.hexToNumberString('0x1f0fe294a36'), '2134567897654');
// allow compatiblity
assert.equal(utils.hexToNumberString(100000), '100000');
assert.equal(utils.hexToNumberString('100000'), '100000');
});

it('should validate hex strings', function() {
try {
utils.hexToNumberString('100000');
assert.fail();
} catch (error){
assert(error.message.includes('is not a valid hex string'))
}
})
});
});

0 comments on commit b4c8112

Please sign in to comment.