]> git.basschouten.com Git - openhab-addons.git/commitdiff
Fix StringIndexOutOfBoundsException (#15319)
authorJacob Laursen <jacob-github@vindvejr.dk>
Fri, 28 Jul 2023 08:00:48 +0000 (10:00 +0200)
committerGitHub <noreply@github.com>
Fri, 28 Jul 2023 08:00:48 +0000 (10:00 +0200)
Fixes #15318

Reverts #14402

Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
bundles/org.openhab.binding.digitalstrom/src/main/java/org/openhab/binding/digitalstrom/internal/lib/serverconnection/impl/HttpTransportImpl.java

index 1c63bb82b813064dbf0e616edd137b7eb87de1d5..ff8adab9bef9dd07e3268a373a3e8c2ae6d616c1 100644 (file)
@@ -43,6 +43,7 @@ import javax.net.ssl.SSLSocketFactory;
 import javax.net.ssl.TrustManager;
 import javax.net.ssl.X509TrustManager;
 
+import org.apache.commons.lang3.StringUtils;
 import org.openhab.binding.digitalstrom.internal.lib.config.Config;
 import org.openhab.binding.digitalstrom.internal.lib.manager.ConnectionManager;
 import org.openhab.binding.digitalstrom.internal.lib.serverconnection.HttpTransport;
@@ -333,8 +334,7 @@ public class HttpTransportImpl implements HttpTransport {
     }
 
     private boolean checkNeededSessionToken(String request) {
-        String requestFirstPart = request.substring(0, request.indexOf("?"));
-        String functionName = requestFirstPart.substring(requestFirstPart.lastIndexOf("/") + 1);
+        String functionName = StringUtils.substringAfterLast(StringUtils.substringBefore(request, "?"), "/");
         return !DsAPIImpl.METHODS_MUST_NOT_BE_LOGGED_IN.contains(functionName);
     }
 
@@ -347,10 +347,8 @@ public class HttpTransportImpl implements HttpTransport {
                 correctedRequest = correctedRequest + "?" + ParameterKeys.TOKEN + "=" + sessionToken;
             }
         } else {
-            String strippedRequest = correctedRequest
-                    .substring(correctedRequest.indexOf(ParameterKeys.TOKEN + "=") + ParameterKeys.TOKEN.length() + 1);
-            strippedRequest = strippedRequest.substring(0, strippedRequest.lastIndexOf("&"));
-            correctedRequest = correctedRequest.replaceFirst(strippedRequest, sessionToken);
+            correctedRequest = StringUtils.replaceOnce(correctedRequest, StringUtils.substringBefore(
+                    StringUtils.substringAfter(correctedRequest, ParameterKeys.TOKEN + "="), "&"), sessionToken);
         }
         return correctedRequest;
     }