mirror of
				https://github.com/spring-projects/spring-security.git
				synced 2025-10-30 22:28:46 +00:00 
			
		
		
		
	Merge branch '5.8.x' into 6.2.x
Closes gh-15985
This commit is contained in:
		
						commit
						addc7c53b2
					
				| @ -1,5 +1,5 @@ | |||||||
| /* | /* | ||||||
|  * Copyright 2002-2023 the original author or authors. |  * Copyright 2002-2024 the original author or authors. | ||||||
|  * |  * | ||||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); |  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  * you may not use this file except in compliance with the License. |  * you may not use this file except in compliance with the License. | ||||||
| @ -73,6 +73,9 @@ public class CookieRequestCache implements RequestCache { | |||||||
| 			return null; | 			return null; | ||||||
| 		} | 		} | ||||||
| 		String originalURI = decodeCookie(savedRequestCookie.getValue()); | 		String originalURI = decodeCookie(savedRequestCookie.getValue()); | ||||||
|  | 		if (originalURI == null) { | ||||||
|  | 			return null; | ||||||
|  | 		} | ||||||
| 		UriComponents uriComponents = UriComponentsBuilder.fromUriString(originalURI).build(); | 		UriComponents uriComponents = UriComponentsBuilder.fromUriString(originalURI).build(); | ||||||
| 		DefaultSavedRequest.Builder builder = new DefaultSavedRequest.Builder(); | 		DefaultSavedRequest.Builder builder = new DefaultSavedRequest.Builder(); | ||||||
| 		int port = getPort(uriComponents); | 		int port = getPort(uriComponents); | ||||||
| @ -122,8 +125,14 @@ public class CookieRequestCache implements RequestCache { | |||||||
| 		return Base64.getEncoder().encodeToString(cookieValue.getBytes()); | 		return Base64.getEncoder().encodeToString(cookieValue.getBytes()); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	private static String decodeCookie(String encodedCookieValue) { | 	private String decodeCookie(String encodedCookieValue) { | ||||||
| 		return new String(Base64.getDecoder().decode(encodedCookieValue.getBytes())); | 		try { | ||||||
|  | 			return new String(Base64.getDecoder().decode(encodedCookieValue.getBytes())); | ||||||
|  | 		} | ||||||
|  | 		catch (IllegalArgumentException ex) { | ||||||
|  | 			this.logger.debug("Failed decode cookie value " + encodedCookieValue); | ||||||
|  | 			return null; | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	private static String getCookiePath(HttpServletRequest request) { | 	private static String getCookiePath(HttpServletRequest request) { | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| /* | /* | ||||||
|  * Copyright 2002-2023 the original author or authors. |  * Copyright 2002-2024 the original author or authors. | ||||||
|  * |  * | ||||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); |  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  * you may not use this file except in compliance with the License. |  * you may not use this file except in compliance with the License. | ||||||
| @ -212,4 +212,14 @@ public class CookieRequestCacheTests { | |||||||
| 		return new String(Base64.getDecoder().decode(encodedCookieValue.getBytes())); | 		return new String(Base64.getDecoder().decode(encodedCookieValue.getBytes())); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	// gh-15905 | ||||||
|  | 	@Test | ||||||
|  | 	public void illegalCookieValueReturnNull() { | ||||||
|  | 		CookieRequestCache cookieRequestCache = new CookieRequestCache(); | ||||||
|  | 		MockHttpServletRequest request = new MockHttpServletRequest(); | ||||||
|  | 		request.setCookies(new Cookie(DEFAULT_COOKIE_NAME, "123^456")); | ||||||
|  | 		SavedRequest savedRequest = cookieRequestCache.getRequest(request, new MockHttpServletResponse()); | ||||||
|  | 		assertThat(savedRequest).isNull(); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user