From d6f39afe0072925546eb4a21660aad928e85475f 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(). Original pull request: #291. --- .../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 fdd37b0fb..0e8ecf0e5 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 @@ import org.springframework.lang.Nullable; * * @author Thomas Darimont * @author Oliver Gierke + * @author Alex Bondarev */ public abstract class AbstractPageRequest implements Pageable, Serializable { @@ -74,7 +75,7 @@ public abstract class AbstractPageRequest implements Pageable, Serializable { * @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 f263eee51..799b45244 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 @@ import org.junit.Test; /** * @author Thomas Darimont + * @author Alex Bondarev */ public abstract class AbstractPageRequestUnitTests { @@ -75,4 +76,12 @@ public abstract class AbstractPageRequestUnitTests { 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); + } }