You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.6 KiB
65 lines
1.6 KiB
/*
|
|
* Copyright (c) 2015 - present Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*/
|
|
|
|
package javax.net;
|
|
|
|
import java.io.IOException;
|
|
import java.net.InetAddress;
|
|
import java.net.Socket;
|
|
|
|
import com.facebook.infer.models.InferBuiltins;
|
|
|
|
public class SocketFactory {
|
|
|
|
// using recency abstraction to remember the last Socket created
|
|
private static Socket sLast;
|
|
|
|
public static Socket getLastSocket() {
|
|
return sLast;
|
|
}
|
|
|
|
// proxy for Socket of undefined type
|
|
private native Socket genSocket();
|
|
|
|
private Socket returnAllocatedSocket() {
|
|
Socket socket = genSocket();
|
|
InferBuiltins.assume_allocated(socket);
|
|
sLast = socket;
|
|
return socket;
|
|
}
|
|
|
|
public Socket createSocket() {
|
|
Socket socket = returnAllocatedSocket();
|
|
InferBuiltins.__set_taint_attribute(socket);
|
|
return socket;
|
|
}
|
|
|
|
// the methods below are abstract methods in the actual Java class, but we need to implement it
|
|
// explicitly due to Infer's dynamic dispatch woes
|
|
public Socket createSocket(InetAddress addr, int i) throws IOException {
|
|
return this.createSocket();
|
|
}
|
|
|
|
public Socket createSocket(InetAddress addr1, int i, InetAddress addr2, int j)
|
|
throws IOException {
|
|
|
|
return this.createSocket();
|
|
}
|
|
|
|
public Socket createSocket(String s, int i) throws IOException {
|
|
return this.createSocket();
|
|
|
|
}
|
|
|
|
public Socket createSocket(String s, int i, InetAddress addr, int j) throws IOException {
|
|
return this.createSocket();
|
|
}
|
|
|
|
}
|