From 0a5e836ab69d52c262ea792ed4b84a82dd8a34ca Mon Sep 17 00:00:00 2001 From: AsamK Date: Sun, 22 Aug 2021 18:47:20 +0200 Subject: [PATCH] Fix rare null pointer exception when receiving message from untrusted identity --- .../org/asamk/signal/manager/Manager.java | 24 +++++++------------ 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/lib/src/main/java/org/asamk/signal/manager/Manager.java b/lib/src/main/java/org/asamk/signal/manager/Manager.java index 60a196dc..cde2714f 100644 --- a/lib/src/main/java/org/asamk/signal/manager/Manager.java +++ b/lib/src/main/java/org/asamk/signal/manager/Manager.java @@ -1843,7 +1843,7 @@ public class Manager implements Closeable { ) throws IOException, InterruptedException { retryFailedReceivedMessages(handler, ignoreAttachments); - Set queuedActions = null; + Set queuedActions = new HashSet<>(); final var signalWebSocket = dependencies.getSignalWebSocket(); signalWebSocket.connect(); @@ -1872,20 +1872,17 @@ public class Manager implements Closeable { // Received indicator that server queue is empty hasCaughtUpWithOldMessages = true; - if (queuedActions != null) { - for (var action : queuedActions) { - try { - action.execute(this); - } catch (Throwable e) { - if (e instanceof AssertionError && e.getCause() instanceof InterruptedException) { - Thread.currentThread().interrupt(); - } - logger.warn("Message action failed.", e); + for (var action : queuedActions) { + try { + action.execute(this); + } catch (Throwable e) { + if (e instanceof AssertionError && e.getCause() instanceof InterruptedException) { + Thread.currentThread().interrupt(); } + logger.warn("Message action failed.", e); } - queuedActions.clear(); - queuedActions = null; } + queuedActions.clear(); // Continue to wait another timeout for new messages continue; @@ -1939,9 +1936,6 @@ public class Manager implements Closeable { } } } else { - if (queuedActions == null) { - queuedActions = new HashSet<>(); - } queuedActions.addAll(actions); } } -- 2.50.1