From 866274559aa21340361c45ca39e40208e56c3270 Mon Sep 17 00:00:00 2001 From: Andrei Ovcharenko Date: Tue, 18 Aug 2026 16:23:49 +0300 Subject: [PATCH] Prevent overflow in AreSame comparison --- src/main/java/kyu6/AreSame.java | 3 ++- src/test/java/kyu6/AreSameTest.java | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/kyu6/AreSame.java b/src/main/java/kyu6/AreSame.java index 57f3afd..7b16ca5 100644 --- a/src/main/java/kyu6/AreSame.java +++ b/src/main/java/kyu6/AreSame.java @@ -12,10 +12,11 @@ public class AreSame { public static boolean comp(int[] a, int[] b) { return a != null && b != null && Arrays.equals( Arrays.stream(a) - .map(i -> i * i) + .mapToLong(i -> (long) i * i) .sorted() .toArray(), Arrays.stream(b) + .mapToLong(i -> i) .sorted() .toArray()); } diff --git a/src/test/java/kyu6/AreSameTest.java b/src/test/java/kyu6/AreSameTest.java index 5f1df1b..cc05e8b 100644 --- a/src/test/java/kyu6/AreSameTest.java +++ b/src/test/java/kyu6/AreSameTest.java @@ -17,6 +17,12 @@ import static kyu6.AreSame.*; @Tag("smoke") public class AreSameTest { + @Test + void rejectsOverflowedSquares() { + assertFalse(comp(new int[]{46341}, new int[]{-2147479015})); + assertFalse(comp(new int[]{Integer.MIN_VALUE}, new int[]{0})); + } + @Test void smokeTestsShouldExecuteApi() { quality.SmokeMethodTestHarness.verify(kyu6.AreSame.class);