From c123f6fb72daef13311fb5ac30ea02522d7929eb Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Wed, 14 Jun 2023 12:06:50 +0200 Subject: [PATCH 1/2] Make skipping prefix explicit --- .../forms/CreateTxForm/MsgForm/MsgTransferForm.tsx | 2 +- lib/displayHelpers.ts | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/components/forms/CreateTxForm/MsgForm/MsgTransferForm.tsx b/components/forms/CreateTxForm/MsgForm/MsgTransferForm.tsx index 6ee2a0d..726c73f 100644 --- a/components/forms/CreateTxForm/MsgForm/MsgTransferForm.tsx +++ b/components/forms/CreateTxForm/MsgForm/MsgTransferForm.tsx @@ -75,7 +75,7 @@ const MsgTransferForm = ({ fromAddress, setMsgGetter, deleteMsg }: MsgTransferFo return false; } - const addressErrorMsg = checkAddress(toAddress, ""); // Allow address from any chain + const addressErrorMsg = checkAddress(toAddress, null); // Allow address from any chain if (addressErrorMsg) { setToAddressError(`Invalid address for network ${state.chain.chainId}: ${addressErrorMsg}`); return false; diff --git a/lib/displayHelpers.ts b/lib/displayHelpers.ts index 41ee63a..aa52ae2 100644 --- a/lib/displayHelpers.ts +++ b/lib/displayHelpers.ts @@ -117,10 +117,11 @@ function examplePubkey(index: number): string { /** * Returns an error message for invalid addresses. - * * Returns null of there is no error. + * + * If `chainAddressPrefix` is null, the prefix check will be skipped. */ -const checkAddress = (input: string, chainAddressPrefix: string) => { +const checkAddress = (input: string, chainAddressPrefix: string | null) => { if (!input) return "Empty"; let data; @@ -132,8 +133,12 @@ const checkAddress = (input: string, chainAddressPrefix: string) => { return error.toString(); } - if (!prefix.startsWith(chainAddressPrefix)) { - return `Expected address prefix '${chainAddressPrefix}' but got '${prefix}'`; + if (chainAddressPrefix) { + if (!prefix.startsWith(chainAddressPrefix)) { + return `Expected address prefix '${chainAddressPrefix}' but got '${prefix}'`; + } + } else { + // any prefix is allowed } if (data.length !== 20) { From d2a7266d843014f0505298a9c4a47bd04a0e2ce3 Mon Sep 17 00:00:00 2001 From: Simon Warta Date: Wed, 14 Jun 2023 12:07:30 +0200 Subject: [PATCH 2/2] Allow 32 byte addresses --- lib/displayHelpers.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/displayHelpers.ts b/lib/displayHelpers.ts index aa52ae2..34466b0 100644 --- a/lib/displayHelpers.ts +++ b/lib/displayHelpers.ts @@ -141,8 +141,8 @@ const checkAddress = (input: string, chainAddressPrefix: string | null) => { // any prefix is allowed } - if (data.length !== 20) { - return "Invalid address length in bech32 data. Must be 20 bytes."; + if (data.length !== 20 && data.length !== 32) { + return "Invalid address length in bech32 data. Expected 20 or 32 bytes."; } return null;