diff --git a/src/interfaces/jdbc/org/postgresql/PG_Stream.java b/src/interfaces/jdbc/org/postgresql/PG_Stream.java index 3a6eaebc01764a80e0f04a524422ada5c10ff917..ebee9e95fd925b184a43ec66ce7c7aa24481891c 100644 --- a/src/interfaces/jdbc/org/postgresql/PG_Stream.java +++ b/src/interfaces/jdbc/org/postgresql/PG_Stream.java @@ -5,12 +5,13 @@ import java.lang.*; import java.net.*; import java.util.*; import java.sql.*; +import java.security.*; import org.postgresql.*; import org.postgresql.core.*; import org.postgresql.util.*; /** - * $Id: PG_Stream.java,v 1.11 2001/07/30 14:51:19 momjian Exp $ + * $Id: PG_Stream.java,v 1.12 2001/08/26 01:06:20 momjian Exp $ * * This class is used by Connection & PGlobj for communicating with the * backend. @@ -28,6 +29,25 @@ public class PG_Stream BytePoolDim1 bytePoolDim1 = new BytePoolDim1(); BytePoolDim2 bytePoolDim2 = new BytePoolDim2(); + private static class PrivilegedSocket + implements PrivilegedExceptionAction + { + private String host; + private int port; + + PrivilegedSocket(String host, int port) + { + this.host = host; + this.port = port; + } + + public Object run() throws Exception + { + return new Socket(host, port); + } + } + + /** * Constructor: Connect to the PostgreSQL back end and return * a stream connection. @@ -38,7 +58,13 @@ public class PG_Stream */ public PG_Stream(String host, int port) throws IOException { - connection = new Socket(host, port); + PrivilegedSocket ps = new PrivilegedSocket(host, port); + try { + connection = (Socket)AccessController.doPrivileged(ps); + } + catch(PrivilegedActionException pae){ + throw (IOException)pae.getException(); + } // Submitted by Jason Venner <jason@idiom.com> adds a 10x speed // improvement on FreeBSD machines (caused by a bug in their TCP Stack)