From 6ee57315dd05652935cedcc23f56382b504b3bb6 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Mon, 12 Apr 2021 08:18:54 -0300 Subject: [PATCH] Prevent NPE when onQrCodeDecoded() is called after we stop to listen --- .../contact/add/nearby/AddNearbyContactViewModel.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactViewModel.java index 0f7c0e5bb..7d69bd954 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactViewModel.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/add/nearby/AddNearbyContactViewModel.java @@ -74,7 +74,6 @@ import static android.bluetooth.BluetoothAdapter.ACTION_SCAN_MODE_CHANGED; import static android.bluetooth.BluetoothAdapter.EXTRA_SCAN_MODE; import static android.bluetooth.BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE; import static android.widget.Toast.LENGTH_LONG; -import static java.util.Objects.requireNonNull; import static java.util.logging.Level.INFO; import static java.util.logging.Level.WARNING; import static java.util.logging.Logger.getLogger; @@ -417,15 +416,16 @@ class AddNearbyContactViewModel extends AndroidViewModel @IoExecutor public void onQrCodeDecoded(Result result) { LOG.info("Got result from decoder"); + KeyAgreementTask currentTask = task; // Ignore results until the KeyAgreementTask is ready - if (!gotLocalPayload || gotRemotePayload) return; + if (!gotLocalPayload || gotRemotePayload || currentTask == null) return; try { byte[] payloadBytes = result.getText().getBytes(ISO_8859_1); if (LOG.isLoggable(INFO)) LOG.info("Remote payload is " + payloadBytes.length + " bytes"); Payload remotePayload = payloadParser.parse(payloadBytes); gotRemotePayload = true; - requireNonNull(task).connectAndRunProtocol(remotePayload); + currentTask.connectAndRunProtocol(remotePayload); state.postValue(new AddContactState.QrCodeScanned()); } catch (UnsupportedVersionException e) { resetPayloadFlags();