diff --git a/lib/primitives/address.js b/lib/primitives/address.js index 690e4352..68277ba5 100644 --- a/lib/primitives/address.js +++ b/lib/primitives/address.js @@ -307,7 +307,8 @@ Address.prototype.inspect = function inspect() { Address.prototype.fromRaw = function fromRaw(data, network) { var br = new BufferReader(data, true); - var prefix, type, version, hash; + var version = -1; + var prefix, type, hash; if (data.length > 40) throw new Error('Address is too long.'); @@ -318,16 +319,16 @@ Address.prototype.fromRaw = function fromRaw(data, network) { if (data.length > 25) { version = br.readU8(); - assert(br.readU8() === 0, 'Address version padding is non-zero.'); - } else { - version = -1; + + if (br.readU8() !== 0) + throw new Error('Address version padding is non-zero.'); } hash = br.readBytes(br.left() - 4); br.verifyChecksum(); - return this.fromHash(hash, type, version, network.type); + return this.fromHash(hash, type, version, network); }; /** @@ -647,7 +648,7 @@ Address.fromPubkeyhash = function fromPubkeyhash(hash, network) { Address.prototype.fromScripthash = function fromScripthash(hash, network) { var type = Address.types.SCRIPTHASH; - assert(hash.length === 20, 'P2SH must be 20 bytes.'); + assert(hash && hash.length === 20, 'P2SH must be 20 bytes.'); return this.fromHash(hash, type, -1, network); }; @@ -672,7 +673,7 @@ Address.fromScripthash = function fromScripthash(hash, network) { Address.prototype.fromWitnessPubkeyhash = function fromWitnessPubkeyhash(hash, network) { var type = Address.types.WITNESS; - assert(hash.length === 20, 'P2WPKH must be 20 bytes.'); + assert(hash && hash.length === 20, 'P2WPKH must be 20 bytes.'); return this.fromHash(hash, type, 0, network); }; @@ -697,7 +698,7 @@ Address.fromWitnessPubkeyhash = function fromWitnessPubkeyhash(hash, network) { Address.prototype.fromWitnessScripthash = function fromWitnessScripthash(hash, network) { var type = Address.types.WITNESS; - assert(hash.length === 32, 'P2WPKH must be 32 bytes.'); + assert(hash && hash.length === 32, 'P2WPKH must be 32 bytes.'); return this.fromHash(hash, type, 0, network); };