From 2dc0ea2b891a344688294c326b9c86ec02b4c81a Mon Sep 17 00:00:00 2001 From: Chris Eager Date: Thu, 7 Mar 2024 15:48:25 -0600 Subject: [PATCH] Address potential NullPointerException when calling Collection#contains --- .../metrics/MetricsHttpChannelListener.java | 11 +++++------ .../websocket/WebSocketResourceProvider.java | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MetricsHttpChannelListener.java b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MetricsHttpChannelListener.java index 07458d880..5259b1e1d 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MetricsHttpChannelListener.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/metrics/MetricsHttpChannelListener.java @@ -160,12 +160,11 @@ public class MetricsHttpChannelListener implements HttpChannel.Listener, Contain private RequestInfo getRequestInfo(Request request) { final String path = Optional.ofNullable(request.getAttribute(URI_INFO_PROPERTY_NAME)) .map(attr -> UriInfoUtil.getPathTemplate((ExtendedUriInfo) attr)) - .orElseGet(() -> { - if (servletPaths.contains(request.getPathInfo())) { - return request.getPathInfo(); - } - return "unknown"; - }); + .orElseGet(() -> + Optional.ofNullable(request.getPathInfo()) + .filter(servletPaths::contains) + .orElse("unknown") + ); final String method = Optional.ofNullable(request.getMethod()).orElse("unknown"); // Response cannot be null, but its status might not always reflect an actual response status, since it gets // initialized to 200 diff --git a/websocket-resources/src/main/java/org/whispersystems/websocket/WebSocketResourceProvider.java b/websocket-resources/src/main/java/org/whispersystems/websocket/WebSocketResourceProvider.java index 3677365d9..168ea477e 100644 --- a/websocket-resources/src/main/java/org/whispersystems/websocket/WebSocketResourceProvider.java +++ b/websocket-resources/src/main/java/org/whispersystems/websocket/WebSocketResourceProvider.java @@ -195,7 +195,7 @@ public class WebSocketResourceProvider implements WebSocket // If the request ended up being one that mutates our principal, we have to close it to indicate we're done // with the mutation operation final Object resolvedPrincipal = containerRequest.getProperty(RESOLVED_PRINCIPAL_PROPERTY); - if (resolvedPrincipal instanceof ReusableAuth.MutableRef ref) { + if (resolvedPrincipal instanceof ReusableAuth.MutableRef ref) { ref.close(); } else if (resolvedPrincipal != null) { logger.warn("unexpected resolved principal type {} : {}", resolvedPrincipal.getClass(), resolvedPrincipal);