Repository: wicket Updated Branches: refs/heads/wicket-6.x ae2d5167c -> c0fb5d4b2
WICKET-6131 IndexOutOfBoundsException in org.apache.wicket.core.request.mapper.CryptoMapper.decryptEntireUrl Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/c0fb5d4b Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/c0fb5d4b Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/c0fb5d4b Branch: refs/heads/wicket-6.x Commit: c0fb5d4b2f64160a64186fbd0dcdafcab6e83384 Parents: ae2d516 Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Tue Mar 29 16:19:01 2016 +0200 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Tue Mar 29 16:19:01 2016 +0200 ---------------------------------------------------------------------- .../core/request/mapper/CryptoMapper.java | 2 +- .../core/request/mapper/CryptoMapperTest.java | 22 ++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/c0fb5d4b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/CryptoMapper.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/CryptoMapper.java b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/CryptoMapper.java index 4d6a89f..833dc67 100755 --- a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/CryptoMapper.java +++ b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/CryptoMapper.java @@ -513,7 +513,7 @@ public class CryptoMapper implements IRequestMapperDelegate int segNo = 1; for (; segNo < encryptedNumberOfSegments; segNo++) { - if (segNo > originalNumberOfSegments) + if (segNo >= originalNumberOfSegments) { break; } http://git-wip-us.apache.org/repos/asf/wicket/blob/c0fb5d4b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/CryptoMapperTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/CryptoMapperTest.java b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/CryptoMapperTest.java index fce5e0a..7031a1e 100644 --- a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/CryptoMapperTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/CryptoMapperTest.java @@ -191,6 +191,28 @@ public class CryptoMapperTest extends AbstractMapperTest } /** + * https://issues.apache.org/jira/browse/WICKET-6131 + * + * Tests that encrypted URLs for bookmarkable pages are decrypted and passed to the wrapped mapper. + * Extra segments should be ignored. + */ + @Test + public void bookmarkablePageDecrypt2() + { + String encryptedExtraSegments = "/i87b7/i87b7"; + Request request = getRequest(Url.parse(ENCRYPTED_BOOKMARKABLE_URL + encryptedExtraSegments)); + IRequestHandler requestHandler = mapper.mapRequest(request); + + assertNotNull(requestHandler); + requestHandler = unwrapRequestHandlerDelegate(requestHandler); + + assertTrue(requestHandler instanceof RenderPageRequestHandler); + + RenderPageRequestHandler handler = (RenderPageRequestHandler) requestHandler; + assertEquals(Page2.class, handler.getPageClass()); + } + + /** * Tests that encrypted URLs for bookmarkable pages are decrypted and passed to the wrapped mapper when there is more than * one cryptomapper installed. */
