From 17bd483ff01e463cef45824f0c1296a8f3e782c8 Mon Sep 17 00:00:00 2001 From: Alex Menkov Date: Fri, 7 Jun 2024 19:30:37 +0000 Subject: [PATCH] 8333680: com/sun/tools/attach/BasicTests.java fails with "SocketException: Permission denied: connect" Reviewed-by: sspitsyn, kevinw, lmesnik --- test/jdk/com/sun/tools/attach/Agent.java | 5 +++-- test/jdk/com/sun/tools/attach/BasicTests.java | 8 ++++++-- test/jdk/com/sun/tools/attach/RedefineAgent.java | 5 +++-- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/test/jdk/com/sun/tools/attach/Agent.java b/test/jdk/com/sun/tools/attach/Agent.java index 9090ea73519..510ff787fa7 100644 --- a/test/jdk/com/sun/tools/attach/Agent.java +++ b/test/jdk/com/sun/tools/attach/Agent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -28,6 +28,7 @@ * the given port. */ import java.net.Socket; +import java.net.InetAddress; import java.net.InetSocketAddress; import java.io.IOException; @@ -38,7 +39,7 @@ public class Agent { int port = Integer.parseInt(args); System.out.println("Agent connecting back to Tool...."); Socket s = new Socket(); - s.connect( new InetSocketAddress(port) ); + s.connect(new InetSocketAddress(InetAddress.getLoopbackAddress(), port)); System.out.println("Agent connected to Tool."); s.close(); } diff --git a/test/jdk/com/sun/tools/attach/BasicTests.java b/test/jdk/com/sun/tools/attach/BasicTests.java index 4dc7065630f..9ae45436810 100644 --- a/test/jdk/com/sun/tools/attach/BasicTests.java +++ b/test/jdk/com/sun/tools/attach/BasicTests.java @@ -23,6 +23,8 @@ import java.io.File; import java.io.IOException; +import java.net.InetAddress; +import java.net.InetSocketAddress; import java.net.ServerSocket; import java.net.Socket; import java.util.List; @@ -213,7 +215,8 @@ public class BasicTests { System.out.println(" - Test: End-to-end connection with agent"); - ServerSocket ss = new ServerSocket(0); + ServerSocket ss = new ServerSocket(); + ss.bind(new InetSocketAddress(InetAddress.getLoopbackAddress(), 0)); int port = ss.getLocalPort(); System.out.println(" - Loading Agent.jar into target VM ..."); @@ -231,7 +234,8 @@ public class BasicTests { System.out.println(" - Test: End-to-end connection with RedefineAgent"); - ServerSocket ss2 = new ServerSocket(0); + ServerSocket ss2 = new ServerSocket(); + ss2.bind(new InetSocketAddress(InetAddress.getLoopbackAddress(), 0)); int port2 = ss2.getLocalPort(); System.out.println(" - Loading RedefineAgent.jar into target VM ..."); diff --git a/test/jdk/com/sun/tools/attach/RedefineAgent.java b/test/jdk/com/sun/tools/attach/RedefineAgent.java index af01df42762..cc0e7d269df 100644 --- a/test/jdk/com/sun/tools/attach/RedefineAgent.java +++ b/test/jdk/com/sun/tools/attach/RedefineAgent.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2006, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -32,6 +32,7 @@ * 6446941 java.lang.instrument: multiple agent attach fails (first agent chooses capabilities) */ import java.net.Socket; +import java.net.InetAddress; import java.net.InetSocketAddress; import java.io.IOException; import java.util.Arrays; @@ -104,7 +105,7 @@ public class RedefineAgent implements ClassFileTransformer { int port = Integer.parseInt(args); System.out.println("RedefineAgent connecting back to Tool...."); Socket s = new Socket(); - s.connect( new InetSocketAddress(port) ); + s.connect(new InetSocketAddress(InetAddress.getLoopbackAddress(), port)); System.out.println("RedefineAgent connected to Tool."); testRedefine(inst);