From f418e6e257790679f9094cbe0db39ec528eb87fb Mon Sep 17 00:00:00 2001 From: Alex Bondarev <41ex.bondarev@gmail.com> Date: Mon, 21 May 2018 17:15:10 +0300 Subject: [PATCH] DATACMNS-1327 - prevent int overflow in AbstractPageRequest#getOffset() --- .../springframework/data/domain/AbstractPageRequest.java | 3 ++- .../data/domain/AbstractPageRequestUnitTests.java | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/springframework/data/domain/AbstractPageRequest.java b/src/main/java/org/springframework/data/domain/AbstractPageRequest.java index d5852e38e9..8b929d8953 100644 --- a/src/main/java/org/springframework/data/domain/AbstractPageRequest.java +++ b/src/main/java/org/springframework/data/domain/AbstractPageRequest.java @@ -24,6 +24,7 @@ * * @author Thomas Darimont * @author Oliver Gierke + * @author Alex Bondarev */ public abstract class AbstractPageRequest implements Pageable, Serializable { @@ -74,7 +75,7 @@ public int getPageNumber() { * @see org.springframework.data.domain.Pageable#getOffset() */ public long getOffset() { - return page * size; + return (long) page * (long) size; } /* diff --git a/src/test/java/org/springframework/data/domain/AbstractPageRequestUnitTests.java b/src/test/java/org/springframework/data/domain/AbstractPageRequestUnitTests.java index 85a38a127e..0e09dae8e3 100755 --- a/src/test/java/org/springframework/data/domain/AbstractPageRequestUnitTests.java +++ b/src/test/java/org/springframework/data/domain/AbstractPageRequestUnitTests.java @@ -22,6 +22,7 @@ /** * @author Thomas Darimont + * @author Alex Bondarev */ public abstract class AbstractPageRequestUnitTests { @@ -75,4 +76,12 @@ public void equalsHonoursPageAndSize() { public void preventsPageSizeLessThanOne() { newPageRequest(0, 0); } + + @Test + public void getOffsetShouldNotCauseOverflow() { + + AbstractPageRequest request = newPageRequest(Integer.MAX_VALUE, Integer.MAX_VALUE); + + assertThat(request.getOffset()).isGreaterThan(Integer.MAX_VALUE); + } }