* The value returned is constant.
*
diff --git a/junixsocket-mysql/src/main/java/org/newsclub/net/mysql/AFUNIXDatabaseSocketFactory.java b/junixsocket-mysql/src/main/java/org/newsclub/net/mysql/AFUNIXDatabaseSocketFactory.java
index 8d173947e..d9b1009a1 100644
--- a/junixsocket-mysql/src/main/java/org/newsclub/net/mysql/AFUNIXDatabaseSocketFactory.java
+++ b/junixsocket-mysql/src/main/java/org/newsclub/net/mysql/AFUNIXDatabaseSocketFactory.java
@@ -63,7 +63,7 @@ public Socket beforeHandshake() throws SocketException, IOException {
}
@Override
- @SuppressFBWarnings("EI_EXPOSE_REP")
+ @SuppressFBWarnings({"EI_EXPOSE_REP", "PATH_TRAVERSAL_IN"})
public Socket connect(String host, int portNumber, Properties props) throws SocketException,
IOException {
// Adjust the path to your MySQL socket by setting the
diff --git a/junixsocket-mysql/src/main/java/org/newsclub/net/mysql/AFUNIXDatabaseSocketFactoryCJ.java b/junixsocket-mysql/src/main/java/org/newsclub/net/mysql/AFUNIXDatabaseSocketFactoryCJ.java
index c2888ca6e..0dd26cdbe 100644
--- a/junixsocket-mysql/src/main/java/org/newsclub/net/mysql/AFUNIXDatabaseSocketFactoryCJ.java
+++ b/junixsocket-mysql/src/main/java/org/newsclub/net/mysql/AFUNIXDatabaseSocketFactoryCJ.java
@@ -46,7 +46,7 @@ public AFUNIXDatabaseSocketFactoryCJ() {
}
@SuppressWarnings({"unchecked"})
- @SuppressFBWarnings("EI_EXPOSE_REP")
+ @SuppressFBWarnings({"EI_EXPOSE_REP", "PATH_TRAVERSAL_IN"})
@Override
public Socket connect(String hostname, int portNumber,
@SuppressWarnings("exports") PropertySet props, int loginTimeout) throws IOException {
diff --git a/junixsocket-rmi/src/main/java/org/newsclub/net/unix/rmi/AFRMIServiceImpl.java b/junixsocket-rmi/src/main/java/org/newsclub/net/unix/rmi/AFRMIServiceImpl.java
index caf52c4de..bd3303bd6 100644
--- a/junixsocket-rmi/src/main/java/org/newsclub/net/unix/rmi/AFRMIServiceImpl.java
+++ b/junixsocket-rmi/src/main/java/org/newsclub/net/unix/rmi/AFRMIServiceImpl.java
@@ -52,7 +52,7 @@ public AFRMIServiceImpl(AFNaming naming) {
this.naming = new WeakReference<>(naming);
}
- @SuppressFBWarnings("DMI_RANDOM_USED_ONLY_ONCE")
+ @SuppressFBWarnings({"DMI_RANDOM_USED_ONLY_ONCE", "PREDICTABLE_RANDOM"})
private/* synchronized */int randomPort() {
int maxRandom = ports.size();
diff --git a/junixsocket-rmi/src/main/java/org/newsclub/net/unix/rmi/AFRMISocketFactory.java b/junixsocket-rmi/src/main/java/org/newsclub/net/unix/rmi/AFRMISocketFactory.java
index 91b605758..14e5605f9 100644
--- a/junixsocket-rmi/src/main/java/org/newsclub/net/unix/rmi/AFRMISocketFactory.java
+++ b/junixsocket-rmi/src/main/java/org/newsclub/net/unix/rmi/AFRMISocketFactory.java
@@ -361,6 +361,7 @@ public void close() throws IOException {
}
@Override
+ @SuppressFBWarnings("OBJECT_DESERIALIZATION")
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
setExternable(new Externables(readNamingInstance(in), //
(RMIClientSocketFactory) in.readObject(), //
diff --git a/junixsocket-rmi/src/main/java/org/newsclub/net/unix/rmi/AFUNIXRMISocketFactory.java b/junixsocket-rmi/src/main/java/org/newsclub/net/unix/rmi/AFUNIXRMISocketFactory.java
index e38e40a32..f0b043e7e 100644
--- a/junixsocket-rmi/src/main/java/org/newsclub/net/unix/rmi/AFUNIXRMISocketFactory.java
+++ b/junixsocket-rmi/src/main/java/org/newsclub/net/unix/rmi/AFUNIXRMISocketFactory.java
@@ -112,6 +112,7 @@ public AFUNIXRMISocketFactory(AFNaming naming, File socketDir) {
}
@Override
+ @SuppressFBWarnings("PATH_TRAVERSAL_IN")
protected AFNaming readNamingInstance(ObjectInput in) throws IOException {
socketDir = new File(in.readUTF());
int port = in.readInt();
@@ -167,6 +168,7 @@ public File getSocketDir() {
return socketDir;
}
+ @SuppressFBWarnings("PATH_TRAVERSAL_IN")
File getFile(int port) {
if (isPlainFileSocket()) {
return getSocketDir();
diff --git a/junixsocket-rmi/src/main/java/org/newsclub/net/unix/rmi/DefaultRMIClientSocketFactory.java b/junixsocket-rmi/src/main/java/org/newsclub/net/unix/rmi/DefaultRMIClientSocketFactory.java
index 815d846f1..25146410c 100644
--- a/junixsocket-rmi/src/main/java/org/newsclub/net/unix/rmi/DefaultRMIClientSocketFactory.java
+++ b/junixsocket-rmi/src/main/java/org/newsclub/net/unix/rmi/DefaultRMIClientSocketFactory.java
@@ -48,6 +48,7 @@ public static DefaultRMIClientSocketFactory getInstance() {
}
@Override
+ @SuppressFBWarnings("UNENCRYPTED_SOCKET")
public Socket createSocket(String host, int port) throws IOException {
Socket socket = new Socket(host, port);
// socket.setSoTimeout(60 * 60 * 1000);
diff --git a/junixsocket-rmi/src/main/java/org/newsclub/net/unix/rmi/DefaultRMIServerSocketFactory.java b/junixsocket-rmi/src/main/java/org/newsclub/net/unix/rmi/DefaultRMIServerSocketFactory.java
index c847d2895..62ac7a593 100644
--- a/junixsocket-rmi/src/main/java/org/newsclub/net/unix/rmi/DefaultRMIServerSocketFactory.java
+++ b/junixsocket-rmi/src/main/java/org/newsclub/net/unix/rmi/DefaultRMIServerSocketFactory.java
@@ -52,6 +52,7 @@ public static DefaultRMIServerSocketFactory getInstance() {
}
@Override
+ @SuppressFBWarnings("UNENCRYPTED_SERVER_SOCKET")
public ServerSocket createServerSocket(int port) throws IOException {
ServerSocket socket = new ServerSocket(port);
// socket.setSoTimeout(60 * 60 * 1000);
diff --git a/junixsocket-rmi/src/main/java/org/newsclub/net/unix/rmi/RemoteFileDescriptorBase.java b/junixsocket-rmi/src/main/java/org/newsclub/net/unix/rmi/RemoteFileDescriptorBase.java
index a3d9659dd..f654e922d 100644
--- a/junixsocket-rmi/src/main/java/org/newsclub/net/unix/rmi/RemoteFileDescriptorBase.java
+++ b/junixsocket-rmi/src/main/java/org/newsclub/net/unix/rmi/RemoteFileDescriptorBase.java
@@ -103,6 +103,7 @@ public RemoteFileDescriptorBase() {
@Override
@SuppressWarnings("PMD.ExceptionAsFlowControl")
+ @SuppressFBWarnings("PREDICTABLE_RANDOM")
public final void writeExternal(ObjectOutput objOut) throws IOException {
if (fd == null || !fd.valid()) {
throw new IOException("No or invalid file descriptor");
@@ -169,6 +170,7 @@ protected void onServerStopped(AFServerSocket> socket) {
}
@SuppressWarnings("resource")
+ @SuppressFBWarnings("OBJECT_DESERIALIZATION")
@Override
public final void readExternal(ObjectInput objIn) throws IOException, ClassNotFoundException {
DataInputStream in1 = remoteConnection.getAndSet(null);
diff --git a/junixsocket-selftest/src/main/java/org/newsclub/net/unix/selftest/Selftest.java b/junixsocket-selftest/src/main/java/org/newsclub/net/unix/selftest/Selftest.java
index b9513db81..03c128e74 100644
--- a/junixsocket-selftest/src/main/java/org/newsclub/net/unix/selftest/Selftest.java
+++ b/junixsocket-selftest/src/main/java/org/newsclub/net/unix/selftest/Selftest.java
@@ -81,6 +81,7 @@
*/
@SuppressWarnings({
"PMD.CyclomaticComplexity", "PMD.CognitiveComplexity", "PMD.CouplingBetweenObjects"})
+@SuppressFBWarnings({"PATH_TRAVERSAL_IN", "INFORMATION_EXPOSURE_THROUGH_AN_ERROR_MESSAGE"})
public class Selftest {
private final Class> diagnosticsHelperClass = resolveOptionalClass(
"org.newsclub.net.unix.SelftestDiagnosticsHelper");
diff --git a/junixsocket-selftest/src/main/java/org/newsclub/net/unix/selftest/apps/EchoServer.java b/junixsocket-selftest/src/main/java/org/newsclub/net/unix/selftest/apps/EchoServer.java
index f0ac19c3a..f8c4ceeb5 100644
--- a/junixsocket-selftest/src/main/java/org/newsclub/net/unix/selftest/apps/EchoServer.java
+++ b/junixsocket-selftest/src/main/java/org/newsclub/net/unix/selftest/apps/EchoServer.java
@@ -25,7 +25,10 @@
import org.newsclub.net.unix.AFSocketAddress;
import org.newsclub.net.unix.server.AFSocketServer;
+import com.kohlschutter.annotations.compiletime.SuppressFBWarnings;
+
// CPD-OFF
+@SuppressFBWarnings("PATH_TRAVERSAL_IN")
public class EchoServer {
private static void printHelp() {
System.err.println("Syntax: java " + EchoServer.class.getName() + "
@@ -31,6 +33,7 @@
*
* @author Christian Kohlschütter
*/
+@SuppressFBWarnings("WEAK_TRUST_MANAGER")
public final class IgnorantX509TrustManager implements X509TrustManager {
private static final IgnorantX509TrustManager INSTANCE = new IgnorantX509TrustManager();
private static final X509Certificate[] EMPTY_ACCEPTED_ISSUERS = new X509Certificate[0];
diff --git a/junixsocket-ssl/src/main/java/org/newsclub/net/unix/ssl/SSLContextBuilder.java b/junixsocket-ssl/src/main/java/org/newsclub/net/unix/ssl/SSLContextBuilder.java
index 95a03f1e2..b87e948ca 100644
--- a/junixsocket-ssl/src/main/java/org/newsclub/net/unix/ssl/SSLContextBuilder.java
+++ b/junixsocket-ssl/src/main/java/org/newsclub/net/unix/ssl/SSLContextBuilder.java
@@ -361,6 +361,7 @@ private TrustManagerFactory buildTrustManagerFactory() throws GeneralSecurityExc
return TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
}
+ @SuppressFBWarnings("URLCONNECTION_SSRF_FD")
private KeyManager[] buildKeyManagers(KeyManagerFactory kmf) throws GeneralSecurityException,
IOException, UnrecoverableKeyException {
if (keyStoreUrl == null) {
@@ -443,6 +444,7 @@ private static KnownJavaBugIOException knownJDKBug(Exception e, String bugId, St
}
}
+ @SuppressFBWarnings("URLCONNECTION_SSRF_FD")
private TrustManager[] buildTrustManagers(TrustManagerFactory tmf) throws IOException,
GeneralSecurityException {
diff --git a/junixsocket-ssl/src/test/java/org/newsclub/net/unix/ssl/SSLContextBuilderTest.java b/junixsocket-ssl/src/test/java/org/newsclub/net/unix/ssl/SSLContextBuilderTest.java
index bd054ef50..dd06af8f2 100644
--- a/junixsocket-ssl/src/test/java/org/newsclub/net/unix/ssl/SSLContextBuilderTest.java
+++ b/junixsocket-ssl/src/test/java/org/newsclub/net/unix/ssl/SSLContextBuilderTest.java
@@ -83,6 +83,7 @@
// CPD-OFF
@SuppressWarnings({"PMD.ExcessiveImports", "PMD.CouplingBetweenObjects"})
+@SuppressFBWarnings({"UNENCRYPTED_SERVER_SOCKET", "URLCONNECTION_SSRF_FD"})
public class SSLContextBuilderTest extends SSLTestBase {
@ParameterizedTest
diff --git a/junixsocket-ssl/src/test/java/org/newsclub/net/unix/ssl/ValidatingX509TrustManagerTest.java b/junixsocket-ssl/src/test/java/org/newsclub/net/unix/ssl/ValidatingX509TrustManagerTest.java
index 42f9f14a4..37e8699bc 100644
--- a/junixsocket-ssl/src/test/java/org/newsclub/net/unix/ssl/ValidatingX509TrustManagerTest.java
+++ b/junixsocket-ssl/src/test/java/org/newsclub/net/unix/ssl/ValidatingX509TrustManagerTest.java
@@ -54,12 +54,14 @@
import org.newsclub.net.unix.AFUNIXSocketAddress;
import org.newsclub.net.unix.KnownJavaBugIOException;
+import com.kohlschutter.annotations.compiletime.SuppressFBWarnings;
import com.kohlschutter.testutil.AssertUtil;
import com.kohlschutter.testutil.TestAbortedWithImportantMessageException;
import com.kohlschutter.testutil.TestAbortedWithImportantMessageException.MessageType;
import com.kohlschutter.testutil.TestResourceUtil;
// CPD-OFF
+@SuppressFBWarnings("URLCONNECTION_SSRF_FD")
public class ValidatingX509TrustManagerTest extends SSLTestBase {
@ParameterizedTest
diff --git a/junixsocket-vsock/src/main/java/org/newsclub/net/unix/vsock/AFVSOCKProxyServerSocketConnector.java b/junixsocket-vsock/src/main/java/org/newsclub/net/unix/vsock/AFVSOCKProxyServerSocketConnector.java
index bbc541b06..30b9b3bd8 100644
--- a/junixsocket-vsock/src/main/java/org/newsclub/net/unix/vsock/AFVSOCKProxyServerSocketConnector.java
+++ b/junixsocket-vsock/src/main/java/org/newsclub/net/unix/vsock/AFVSOCKProxyServerSocketConnector.java
@@ -27,6 +27,8 @@
import org.newsclub.net.unix.AFVSOCKSocketAddress;
import org.newsclub.net.unix.AddressUnavailableSocketException;
+import com.kohlschutter.annotations.compiletime.SuppressFBWarnings;
+
/**
* Provides access to AF_VSOCK connections that aren't directly accessible but exposed via a
* proxying/multiplexing Unix domain socket.
@@ -35,6 +37,7 @@
* @see #openFirecrackerStyleConnector(File, int)
* @see #openDirectConnector()
*/
+@SuppressFBWarnings("PATH_TRAVERSAL_IN")
public final class AFVSOCKProxyServerSocketConnector implements
AFServerSocketConnector