From 1f240c0b0b076263432c741c9c26207dff6f7a8a Mon Sep 17 00:00:00 2001 From: Jaco Date: Wed, 14 Apr 2021 09:12:07 +0300 Subject: [PATCH] Check ss58 for additions (#257) --- packages/phishing/src/addrcheck.spec.ts | 2 +- packages/phishing/src/index.spec.ts | 27 +++++++++++++++++++++++-- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/packages/phishing/src/addrcheck.spec.ts b/packages/phishing/src/addrcheck.spec.ts index 54c428aaa..a00a2889f 100644 --- a/packages/phishing/src/addrcheck.spec.ts +++ b/packages/phishing/src/addrcheck.spec.ts @@ -152,7 +152,7 @@ describe('addrcheck', (): void => { const results = _results.map(([url, addrs]): [string, string[]] => { return [url, addrs.filter((a) => { try { - return !!decodeAddress(a); + return decodeAddress(a).length === 32; } catch (error) { console.error(url, (error as Error).message); diff --git a/packages/phishing/src/index.spec.ts b/packages/phishing/src/index.spec.ts index 16646b2ce..aa7f8490b 100644 --- a/packages/phishing/src/index.spec.ts +++ b/packages/phishing/src/index.spec.ts @@ -1,7 +1,9 @@ // Copyright 2020-2021 @polkadot/phishing authors & contributors // SPDX-License-Identifier: Apache-2.0 -import denied from '../../../address.json'; +import { decodeAddress } from '@polkadot/util-crypto'; + +import addresses from '../../../address.json'; import allowed from '../../../known.json'; import { checkAddress, checkIfDenied } from '.'; @@ -64,9 +66,30 @@ describe('checkAddress', (): void => { }); describe('check additions', (): void => { + it('has no malformed addresses', (): void => { + const invalids = Object + .entries(addresses as Record) + .map(([url, addrs]): [string, string[]] => { + return [url, addrs.filter((a) => { + try { + return decodeAddress(a).length !== 32; + } catch (error) { + console.error(url, (error as Error).message); + + return true; + } + })]; + }) + .filter(([, addrs]) => addrs.length); + + if (invalids.length) { + throw new Error(`Invalid ss58 checksum addresses found: ${invalids.map(([url, addrs]) => `\n\t${url}: ${addrs.join(', ')}`).join('')}`); + } + }); + it('has no entries on the known addresses list', (): void => { const added = Object - .values(denied as Record) + .values(addresses as Record) .reduce((all, addrs) => all.concat(addrs), []); const dupes = Object .entries(allowed as Record)