From 2d5bfdd2409c7e53c82605cc8108377de8cbaf76 Mon Sep 17 00:00:00 2001 From: XenoAmess Date: Fri, 3 Dec 2021 14:44:50 +0800 Subject: [PATCH] potential NPE in TunnelSocketFrameHandler. (#2000) --- .../tunnel/server/TunnelSocketFrameHandler.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/tunnel-server/src/main/java/com/alibaba/arthas/tunnel/server/TunnelSocketFrameHandler.java b/tunnel-server/src/main/java/com/alibaba/arthas/tunnel/server/TunnelSocketFrameHandler.java index 73e3f3099..002fe52fd 100644 --- a/tunnel-server/src/main/java/com/alibaba/arthas/tunnel/server/TunnelSocketFrameHandler.java +++ b/tunnel-server/src/main/java/com/alibaba/arthas/tunnel/server/TunnelSocketFrameHandler.java @@ -98,8 +98,13 @@ public class TunnelSocketFrameHandler extends SimpleChannelInboundHandler */ if (MethodConstants.HTTP_PROXY.equals(method)) { - String requestId = URLDecoder.decode(parameters.getFirst(URIConstans.PROXY_REQUEST_ID), "utf-8"); - + final String requestIdRaw = parameters.getFirst(URIConstans.PROXY_REQUEST_ID); + final String requestId; + if (requestIdRaw != null) { + requestId = URLDecoder.decode(requestIdRaw, "utf-8"); + } else { + requestId = null; + } if (requestId == null) { logger.error("error, need {}, text: {}", URIConstans.PROXY_REQUEST_ID, text); return; @@ -108,7 +113,13 @@ public class TunnelSocketFrameHandler extends SimpleChannelInboundHandler promise = tunnelServer.findProxyRequestPromise(requestId); - String data = URLDecoder.decode(parameters.getFirst(URIConstans.PROXY_RESPONSE_DATA), "utf-8"); + final String dataRaw = parameters.getFirst(URIConstans.PROXY_RESPONSE_DATA); + final String data; + if (dataRaw != null) { + data = URLDecoder.decode(dataRaw, "utf-8"); + } else { + data = null; + } byte[] bytes = Base64.decodeBase64(data);