Skip to content

Commit 4f9389d

Browse files
committed
ban dangerous methods in java.net
1 parent 6aacd4d commit 4f9389d

6 files changed

Lines changed: 25 additions & 7 deletions

File tree

core/src/main/java/org/elasticsearch/common/network/MulticastChannel.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@
2020
package org.elasticsearch.common.network;
2121

2222
import com.google.common.collect.Maps;
23+
2324
import org.apache.lucene.util.IOUtils;
25+
import org.elasticsearch.common.SuppressForbidden;
2426
import org.elasticsearch.common.bytes.BytesArray;
2527
import org.elasticsearch.common.bytes.BytesReference;
2628
import org.elasticsearch.common.logging.ESLogger;
@@ -257,6 +259,7 @@ protected void close(Listener listener) {
257259
/**
258260
* Simple implementation of a channel.
259261
*/
262+
@SuppressForbidden(reason = "I bind to wildcard addresses. I am a total nightmare")
260263
private static class Plain extends MulticastChannel {
261264
private final ESLogger logger;
262265
private final Config config;

core/src/test/java/org/elasticsearch/benchmark/transport/netty/NettyEchoBenchmark.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public ChannelPipeline getPipeline() throws Exception {
5959
});
6060

6161
// Bind and start to accept incoming connections.
62-
serverBootstrap.bind(new InetSocketAddress(9000));
62+
serverBootstrap.bind(new InetSocketAddress(InetAddress.getLoopbackAddress(), 9000));
6363

6464
ClientBootstrap clientBootstrap = new ClientBootstrap(
6565
new NioClientSocketChannelFactory(
@@ -79,7 +79,7 @@ public ChannelPipeline getPipeline() throws Exception {
7979
});
8080

8181
// Start the connection attempt.
82-
ChannelFuture future = clientBootstrap.connect(new InetSocketAddress(InetAddress.getByName("localhost"), 9000));
82+
ChannelFuture future = clientBootstrap.connect(new InetSocketAddress(InetAddress.getLoopbackAddress(), 9000));
8383
future.awaitUninterruptibly();
8484
Channel clientChannel = future.getChannel();
8585

core/src/test/java/org/elasticsearch/discovery/zen/ping/multicast/MulticastZenPingIT.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.elasticsearch.cluster.ClusterName;
2424
import org.elasticsearch.cluster.node.DiscoveryNode;
2525
import org.elasticsearch.cluster.node.DiscoveryNodes;
26+
import org.elasticsearch.common.SuppressForbidden;
2627
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
2728
import org.elasticsearch.common.logging.Loggers;
2829
import org.elasticsearch.common.settings.Settings;
@@ -130,7 +131,7 @@ public boolean nodeHasJoinedClusterOnce() {
130131
}
131132
}
132133

133-
@Test
134+
@Test @SuppressForbidden(reason = "I bind to wildcard addresses. I am a total nightmare")
134135
public void testExternalPing() throws Exception {
135136
Settings settings = Settings.EMPTY;
136137
settings = buildRandomMulticast(settings);

core/src/test/java/org/elasticsearch/transport/NettySizeHeaderFrameDecoderTests.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
package org.elasticsearch.transport;
2121

2222
import com.google.common.base.Charsets;
23+
2324
import org.elasticsearch.Version;
2425
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
2526
import org.elasticsearch.common.network.NetworkService;
@@ -39,6 +40,7 @@
3940

4041
import java.io.BufferedReader;
4142
import java.io.InputStreamReader;
43+
import java.net.InetAddress;
4244
import java.net.Socket;
4345

4446
import static org.elasticsearch.common.settings.Settings.settingsBuilder;
@@ -55,7 +57,7 @@ public class NettySizeHeaderFrameDecoderTests extends ESTestCase {
5557
private ThreadPool threadPool;
5658
private NettyTransport nettyTransport;
5759
private int port;
58-
private String host;
60+
private InetAddress host;
5961

6062
@Before
6163
public void startThreadPool() {
@@ -70,7 +72,7 @@ public void startThreadPool() {
7072

7173
InetSocketTransportAddress transportAddress = (InetSocketTransportAddress) nettyTransport.boundAddress().boundAddress();
7274
port = transportAddress.address().getPort();
73-
host = transportAddress.address().getHostString();
75+
host = transportAddress.address().getAddress();
7476

7577
}
7678

core/src/test/java/org/elasticsearch/transport/netty/NettyTransportMultiPortTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ private int[] getRandomPorts(int numberOfPorts) {
170170
// Set SO_REUSEADDR as we may bind here and not be able
171171
// to reuse the address immediately without it.
172172
serverSocket.setReuseAddress(NetworkUtils.defaultReuseAddress());
173-
serverSocket.bind(new InetSocketAddress(nextPort));
173+
serverSocket.bind(new InetSocketAddress(InetAddress.getLoopbackAddress(), nextPort));
174174

175175
// bind was a success
176176
logger.debug("port [{}] available.", nextPort);

dev-tools/src/main/resources/forbidden/all-signatures.txt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,4 +60,16 @@ java.nio.file.Files#isHidden(java.nio.file.Path) @ Dependent on the operating sy
6060
java.nio.file.Files#getFileStore(java.nio.file.Path) @ Use Environment.getFileStore() instead, impacted by JDK-8034057
6161
java.nio.file.Files#isWritable(java.nio.file.Path) @ Use Environment.isWritable() instead, impacted by JDK-8034057
6262

63-
java.net.InetSocketAddress#<init>(java.lang.String,int) @ Resolve host explicitly to the address(es) you want with InetAddress, and without leniency
63+
@defaultMessage Resolve hosts explicitly to the address(es) you want with InetAddress.
64+
java.net.InetSocketAddress#<init>(java.lang.String,int)
65+
java.net.Socket#<init>(java.lang.String,int)
66+
java.net.Socket#<init>(java.lang.String,int,java.net.InetAddress,int)
67+
68+
@defaultMessage Don't bind to wildcard addresses. Be specific.
69+
java.net.DatagramSocket#<init>()
70+
java.net.DatagramSocket#<init>(int)
71+
java.net.InetSocketAddress#<init>(int)
72+
java.net.MulticastSocket#<init>()
73+
java.net.MulticastSocket#<init>(int)
74+
java.net.ServerSocket#<init>(int)
75+
java.net.ServerSocket#<init>(int,int)

0 commit comments

Comments
 (0)