From 3ebba0d4118770a06760e2578eeb5c7a8b711392 Mon Sep 17 00:00:00 2001 From: Brad Decker Date: Thu, 19 Nov 2020 15:44:42 -0600 Subject: [PATCH] validate addresses in qr codes (#9916) --- ui/app/pages/send/send.component.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/ui/app/pages/send/send.component.js b/ui/app/pages/send/send.component.js index 727c213af..4171f0611 100644 --- a/ui/app/pages/send/send.component.js +++ b/ui/app/pages/send/send.component.js @@ -1,5 +1,6 @@ import React, { Component } from 'react' import PropTypes from 'prop-types' +import ethUtil from 'ethereumjs-util' import { debounce } from 'lodash' import { getAmountErrorObject, @@ -16,6 +17,7 @@ import AddRecipient from './send-content/add-recipient' import SendContent from './send-content' import SendFooter from './send-footer' import EnsInput from './send-content/add-recipient/ens-input' +import { INVALID_RECIPIENT_ADDRESS_ERROR } from './send.constants' export default class SendTransactionScreen extends Component { static propTypes = { @@ -162,12 +164,18 @@ export default class SendTransactionScreen extends Component { if (qrCodeData) { if (qrCodeData.type === 'address') { scannedAddress = qrCodeData.values.address.toLowerCase() - const currentAddress = prevTo?.toLowerCase() - if (currentAddress !== scannedAddress) { - updateSendTo(scannedAddress) - updateGas = true - // Clean up QR code data after handling + if (ethUtil.isValidAddress(scannedAddress)) { + const currentAddress = prevTo?.toLowerCase() + if (currentAddress !== scannedAddress) { + updateSendTo(scannedAddress) + updateGas = true + // Clean up QR code data after handling + qrCodeDetected(null) + } + } else { + scannedAddress = null qrCodeDetected(null) + this.setState({ toError: INVALID_RECIPIENT_ADDRESS_ERROR }) } } }