From edac0ccc32848d4ecf3ae36264318ae4a92cf943 Mon Sep 17 00:00:00 2001
From: Pedro Igor <pigor.craveiro@gmail.com>
Date: Thu, 27 Feb 2020 07:29:06 +0000
Subject: [PATCH] [KEYCLOAK-11576] - Properly handling redirect_uri parser errors

---
 src/main/java/org/keycloak/protocol/cas/utils/RedirectUtils.java |   23 ++++++++++++-----------
 1 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/src/main/java/org/keycloak/protocol/cas/utils/RedirectUtils.java b/src/main/java/org/keycloak/protocol/cas/utils/RedirectUtils.java
index 5f89335..0b108f1 100644
--- a/src/main/java/org/keycloak/protocol/cas/utils/RedirectUtils.java
+++ b/src/main/java/org/keycloak/protocol/cas/utils/RedirectUtils.java
@@ -84,8 +84,18 @@
         KeycloakUriInfo uriInfo = session.getContext().getUri();
         RealmModel realm = session.getContext().getRealm();
 
-        if (redirectUri != null)
-            redirectUri = normalizeUrl(redirectUri);
+        if (redirectUri != null) {
+            try {
+                URI uri = URI.create(redirectUri);
+                redirectUri = uri.normalize().toString();
+            } catch (IllegalArgumentException cause) {
+                logger.debug("Invalid redirect uri", cause);
+                return null;
+            } catch (Exception cause) {
+                logger.debug("Unexpected error when parsing redirect uri", cause);
+                return null;
+            }
+        }
 
         if (redirectUri == null) {
             if (!requireRedirectUri) {
@@ -185,13 +195,4 @@
         }
         return validRedirect;
     }
-
-    private static String normalizeUrl(String url) {
-        try {
-            URI uri = new URI(url);
-            return uri.normalize().toString();
-        } catch (URISyntaxException e) {
-            throw new IllegalArgumentException("Invalid URL syntax: " + e.getMessage());
-        }
-    }
 }

--
Gitblit v1.10.0