You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by rh...@apache.org on 2007/07/03 23:05:59 UTC
svn commit: r552981 - in
/db/derby/code/branches/10.3/java/drda/org/apache/derby/drda:
NetworkServerControl.java server.policy template.policy
Author: rhillegas
Date: Tue Jul 3 14:05:58 2007
New Revision: 552981
URL: http://svn.apache.org/viewvc?view=rev&rev=552981
Log:
DERBY-2874: Port 552977 from the trunk to the 10.3 branch.
Modified:
db/derby/code/branches/10.3/java/drda/org/apache/derby/drda/NetworkServerControl.java
db/derby/code/branches/10.3/java/drda/org/apache/derby/drda/server.policy
db/derby/code/branches/10.3/java/drda/org/apache/derby/drda/template.policy
Modified: db/derby/code/branches/10.3/java/drda/org/apache/derby/drda/NetworkServerControl.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/drda/org/apache/derby/drda/NetworkServerControl.java?view=diff&rev=552981&r1=552980&r2=552981
==============================================================================
--- db/derby/code/branches/10.3/java/drda/org/apache/derby/drda/NetworkServerControl.java (original)
+++ db/derby/code/branches/10.3/java/drda/org/apache/derby/drda/NetworkServerControl.java Tue Jul 3 14:05:58 2007
@@ -23,6 +23,7 @@
import java.io.PrintWriter;
import java.net.InetAddress;
+import java.net.Inet6Address;
import java.net.URL;
import java.util.Properties;
import org.apache.derby.iapi.reference.Property;
@@ -626,7 +627,9 @@
* default server policy file. The special
* wildcard valuse "0.0.0.0" and "::" are forced to be "*" since that is the wildcard
* hostname understood by SocketPermission. SocketPermission does
- * not understand the "0.0.0.0" and "::" wildcards.
+ * not understand the "0.0.0.0" and "::" wildcards. IPV6 addresses are
+ * enclosed in square brackets. This logic arose from two JIRAs:
+ * DERBY-2811 and DERBY-2874.
*/
private static String getHostNameForSocketPermission( NetworkServerControlImpl server )
throws Exception
@@ -642,6 +645,8 @@
IPV6_HOSTNAME_WILDCARD.equals( hostname )
)
{ hostname = SOCKET_PERMISSION_HOSTNAME_WILDCARD; }
+ else if ( isIPV6Address( hostname ) )
+ { hostname = '[' + hostname + "]:0-"; }
return hostname;
}
@@ -658,6 +663,39 @@
} catch (Exception e) { return false; }
}
+ // return true if the host address is an IPV6 address
+ private static boolean isIPV6Address( String hostname )
+ {
+ if ( hostname == null ) { return false; }
+
+ //
+ // First make sure that the address is composed entirely
+ // of hex digits and colons.
+ //
+ int count = hostname.length();
+
+ for ( int i = 0; i < count; i++ )
+ {
+ char currentChar = hostname.charAt( i );
+
+ if ( currentChar == ':' ) { continue; }
+ if ( Character.digit( currentChar, 16 ) >= 0 ) { continue; }
+
+ return false;
+ }
+
+ //
+ // OK, now see whether the address is parsed as an IPV6 address.
+ //
+
+ try {
+ InetAddress address = InetAddress.getByName( hostname );
+
+ return (address instanceof Inet6Address);
+
+ } catch (Exception e) { return false; }
+ }
+
/**
*<p>
* Find the url of the library directory which holds derby.jar and
Modified: db/derby/code/branches/10.3/java/drda/org/apache/derby/drda/server.policy
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/drda/org/apache/derby/drda/server.policy?view=diff&rev=552981&r1=552980&r2=552981
==============================================================================
--- db/derby/code/branches/10.3/java/drda/org/apache/derby/drda/server.policy (original)
+++ db/derby/code/branches/10.3/java/drda/org/apache/derby/drda/server.policy Tue Jul 3 14:05:58 2007
@@ -25,6 +25,6 @@
//
// This permission lets the Network Server manage connections from clients.
//
- permission java.net.SocketPermission "${derby.security.host}:*", "accept";
+ permission java.net.SocketPermission "${derby.security.host}", "accept";
};
Modified: db/derby/code/branches/10.3/java/drda/org/apache/derby/drda/template.policy
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/drda/org/apache/derby/drda/template.policy?view=diff&rev=552981&r1=552980&r2=552981
==============================================================================
--- db/derby/code/branches/10.3/java/drda/org/apache/derby/drda/template.policy (original)
+++ db/derby/code/branches/10.3/java/drda/org/apache/derby/drda/template.policy Tue Jul 3 14:05:58 2007
@@ -37,6 +37,6 @@
//
// This permission lets the Network Server manage connections from clients.
//
- permission java.net.SocketPermission "${derby.security.host}:*", "accept";
+ permission java.net.SocketPermission "${derby.security.host}", "accept";
};