From ee791b102423996ff83ff66007e50fbe18ced16c Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Mon, 24 Jun 2019 15:30:35 +0530 Subject: [PATCH 1/2] console-proxy: fix potential NPE condition When checking if the console proxy URL domain starts with *, the code does not check if the provided string is null. When domain is not configured the IP address should be used. Fixes #3164 Signed-off-by: Rohit Yadav --- core/src/main/java/com/cloud/info/ConsoleProxyInfo.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/core/src/main/java/com/cloud/info/ConsoleProxyInfo.java b/core/src/main/java/com/cloud/info/ConsoleProxyInfo.java index 78cb877e7db0..08ed40dfc856 100644 --- a/core/src/main/java/com/cloud/info/ConsoleProxyInfo.java +++ b/core/src/main/java/com/cloud/info/ConsoleProxyInfo.java @@ -56,14 +56,12 @@ public ConsoleProxyInfo(boolean sslEnabled, String proxyIpAddress, int port, int private String formatProxyAddress(String consoleProxyUrlDomain, String proxyIpAddress) { StringBuffer sb = new StringBuffer(); // Domain in format *.example.com, proxy IP is 1.2.3.4 --> 1-2-3-4.example.com - if (consoleProxyUrlDomain.startsWith("*")) { + if (consoleProxyUrlDomain != null && consoleProxyUrlDomain.startsWith("*")) { sb.append(proxyIpAddress.replaceAll("\\.", "-")); sb.append(consoleProxyUrlDomain.substring(1)); // skip the * - // Otherwise we assume a valid domain if config not blank } else if (StringUtils.isNotBlank(consoleProxyUrlDomain)) { sb.append(consoleProxyUrlDomain); - // Blank config, we use the proxy IP } else { sb.append(proxyIpAddress); From 6dfc536f622cc83cf48cb0689937242fa91ec3d9 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Wed, 26 Jun 2019 13:22:11 +0530 Subject: [PATCH 2/2] refactor code based on nicolas's comment Signed-off-by: Rohit Yadav --- .../main/java/com/cloud/info/ConsoleProxyInfo.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/com/cloud/info/ConsoleProxyInfo.java b/core/src/main/java/com/cloud/info/ConsoleProxyInfo.java index 08ed40dfc856..7e1be6a9cadb 100644 --- a/core/src/main/java/com/cloud/info/ConsoleProxyInfo.java +++ b/core/src/main/java/com/cloud/info/ConsoleProxyInfo.java @@ -55,16 +55,16 @@ public ConsoleProxyInfo(boolean sslEnabled, String proxyIpAddress, int port, int private String formatProxyAddress(String consoleProxyUrlDomain, String proxyIpAddress) { StringBuffer sb = new StringBuffer(); - // Domain in format *.example.com, proxy IP is 1.2.3.4 --> 1-2-3-4.example.com - if (consoleProxyUrlDomain != null && consoleProxyUrlDomain.startsWith("*")) { + if (StringUtils.isBlank(consoleProxyUrlDomain)) { + // Blank config, we use the proxy IP + sb.append(proxyIpAddress); + } else if (consoleProxyUrlDomain.startsWith("*")) { + // Domain in format *.example.com, proxy IP is 1.2.3.4 --> 1-2-3-4.example.com sb.append(proxyIpAddress.replaceAll("\\.", "-")); sb.append(consoleProxyUrlDomain.substring(1)); // skip the * - // Otherwise we assume a valid domain if config not blank - } else if (StringUtils.isNotBlank(consoleProxyUrlDomain)) { - sb.append(consoleProxyUrlDomain); - // Blank config, we use the proxy IP } else { - sb.append(proxyIpAddress); + // Otherwise we assume a valid domain if config not blank + sb.append(consoleProxyUrlDomain); } return sb.toString(); }