diff --git a/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/AuthenticationProviderService.java b/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/AuthenticationProviderService.java index 1ff84c9ef..bee0433fd 100644 --- a/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/AuthenticationProviderService.java +++ b/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/AuthenticationProviderService.java @@ -157,10 +157,17 @@ public class AuthenticationProviderService { // This is a response to a previous challenge, authenticate with that. else { try { - byte[] stateBytes = DatatypeConverter.parseHexBinary(request.getParameter(RadiusStateField.PARAMETER_NAME)); + String stateString = request.getParameter(RadiusStateField.PARAMETER_NAME); + if (stateString == null) { + logger.error("Could not retrieve RADIUS state."); + logger.debug("Received null value while retrieving RADIUS state parameter."); + throws new GuacamoleInvalidCredentialsException("Authentication error.", CredentialsInfo.USERNAME_PASSWORD); + } + + byte[] stateBytes = DatatypeConverter.parseHexBinary(stateString); radPack = radiusService.sendChallengeResponse(credentials.getUsername(), - challengeResponse, - stateBytes); + challengeResponse, + stateBytes); } catch (GuacamoleException e) { logger.error("Cannot configure RADIUS server: {}", e.getMessage());