fix NullPointerException in BonjourPeer and BluetoothPeer

java.lang.IllegalStateException: Fatal Exception thrown on Scheduler.Worker thread.
    at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:62)
    at android.os.Handler.handleCallback(Handler.java:751)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6128)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
    at org.fdroid.fdroid.localrepo.peers.BonjourPeer.equals(BonjourPeer.java:34)
    at java.util.HashMap.put(HashMap.java:427)
    at java.util.HashSet.add(HashSet.java:217)
    at rx.internal.operators.OperatorDistinct$1.onNext(OperatorDistinct.java:62)
    at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.pollQueue(OperatorObserveOn.java:202)
    at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber$2.call(OperatorObserveOn.java:162)
    at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
This commit is contained in:
Hans-Christoph Steiner 2019-05-16 17:51:36 +02:00
parent 779a0122fd
commit 289976667d
2 changed files with 7 additions and 7 deletions

View File

@ -2,7 +2,7 @@ package org.fdroid.fdroid.localrepo.peers;
import android.bluetooth.BluetoothDevice;
import android.os.Parcel;
import android.text.TextUtils;
import org.fdroid.fdroid.R;
import org.fdroid.fdroid.localrepo.type.BluetoothSwap;
@ -31,9 +31,8 @@ public class BluetoothPeer implements Peer {
@Override
public boolean equals(Object peer) {
return peer != null
&& peer instanceof BluetoothPeer
&& ((BluetoothPeer) peer).device.getAddress().equals(device.getAddress());
return peer instanceof BluetoothPeer
&& TextUtils.equals(((BluetoothPeer) peer).device.getAddress(), device.getAddress());
}
@Override
@ -48,7 +47,7 @@ public class BluetoothPeer implements Peer {
/**
* Return the fingerprint of the signing key, or {@code null} if it is not set.
*
* <p>
* This is not yet stored for Bluetooth connections. Once a device is connected to a bluetooth
* socket, if we trust it enough to accept a fingerprint from it somehow, then we may as well
* trust it enough to receive an index from it that contains a fingerprint we can use.

View File

@ -2,6 +2,7 @@ package org.fdroid.fdroid.localrepo.peers;
import android.net.Uri;
import android.os.Parcel;
import android.text.TextUtils;
import javax.jmdns.ServiceInfo;
import javax.jmdns.impl.FDroidServiceInfo;
@ -29,9 +30,9 @@ public class BonjourPeer extends WifiPeer {
@Override
public boolean equals(Object peer) {
if (peer != null && peer instanceof BonjourPeer) {
if (peer instanceof BonjourPeer) {
BonjourPeer that = (BonjourPeer) peer;
return this.getFingerprint().equals(that.getFingerprint());
return TextUtils.equals(this.getFingerprint(), that.getFingerprint());
}
return false;
}