This is an automated email from the ASF dual-hosted git repository.

absurdfarce pushed a commit to branch 4.x
in repository https://gitbox.apache.org/repos/asf/cassandra-java-driver.git


The following commit(s) were added to refs/heads/4.x by this push:
     new 0115cd67c Prevent long overflow in SNI address resolution
0115cd67c is described below

commit 0115cd67c18835b89d8888d405d455045737a630
Author: Lukasz Antoniak <lukasz.anton...@gmail.com>
AuthorDate: Fri Apr 11 13:19:45 2025 +0200

    Prevent long overflow in SNI address resolution
    
    patch by Lukasz Antoniak and Alexandre Dutra; reviewed by Bret McGuire
---
 .../datastax/oss/driver/internal/core/metadata/SniEndPoint.java  | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git 
a/core/src/main/java/com/datastax/oss/driver/internal/core/metadata/SniEndPoint.java
 
b/core/src/main/java/com/datastax/oss/driver/internal/core/metadata/SniEndPoint.java
index ace4e8261..d1ab8eec9 100644
--- 
a/core/src/main/java/com/datastax/oss/driver/internal/core/metadata/SniEndPoint.java
+++ 
b/core/src/main/java/com/datastax/oss/driver/internal/core/metadata/SniEndPoint.java
@@ -26,10 +26,10 @@ import java.net.UnknownHostException;
 import java.util.Arrays;
 import java.util.Comparator;
 import java.util.Objects;
-import java.util.concurrent.atomic.AtomicLong;
+import java.util.concurrent.atomic.AtomicInteger;
 
 public class SniEndPoint implements EndPoint {
-  private static final AtomicLong OFFSET = new AtomicLong();
+  private static final AtomicInteger OFFSET = new AtomicInteger();
 
   private final InetSocketAddress proxyAddress;
   private final String serverName;
@@ -64,7 +64,10 @@ public class SniEndPoint implements EndPoint {
       // The order of the returned address is unspecified. Sort by IP to make 
sure we get a true
       // round-robin
       Arrays.sort(aRecords, IP_COMPARATOR);
-      int index = (aRecords.length == 1) ? 0 : (int) OFFSET.getAndIncrement() 
% aRecords.length;
+      int index =
+          (aRecords.length == 1)
+              ? 0
+              : OFFSET.getAndUpdate(x -> x == Integer.MAX_VALUE ? 0 : x + 1) % 
aRecords.length;
       return new InetSocketAddress(aRecords[index], proxyAddress.getPort());
     } catch (UnknownHostException e) {
       throw new IllegalArgumentException(


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to