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 dy...@apache.org on 2013/11/01 10:27:15 UTC
svn commit: r1537862 -
/db/derby/code/trunk/java/drda/org/apache/derby/drda/NetworkServerControl.java
Author: dyre
Date: Fri Nov 1 09:27:14 2013
New Revision: 1537862
URL: http://svn.apache.org/r1537862
Log:
DERBY-5908: Fix incorrect URLs for network shares. Patch contributed by Kristian Waagan
Modified:
db/derby/code/trunk/java/drda/org/apache/derby/drda/NetworkServerControl.java
Modified: db/derby/code/trunk/java/drda/org/apache/derby/drda/NetworkServerControl.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/drda/org/apache/derby/drda/NetworkServerControl.java?rev=1537862&r1=1537861&r2=1537862&view=diff
==============================================================================
--- db/derby/code/trunk/java/drda/org/apache/derby/drda/NetworkServerControl.java (original)
+++ db/derby/code/trunk/java/drda/org/apache/derby/drda/NetworkServerControl.java Fri Nov 1 09:27:14 2013
@@ -26,7 +26,9 @@ import java.net.Inet6Address;
import java.net.InetAddress;
import java.net.URL;
import java.security.AccessController;
+import java.security.CodeSource;
import java.security.PrivilegedExceptionAction;
+import java.security.ProtectionDomain;
import java.util.Properties;
import org.apache.derby.iapi.reference.Property;
import org.apache.derby.iapi.services.info.JVMInfo;
@@ -690,12 +692,12 @@ public class NetworkServerControl{
System.setSecurityManager( securityManager );
- //
// Report success.
- //
- String successMessage = server.localizeMessage( "DRDA_SecurityInstalled.I", null );
-
- server.consoleMessage( successMessage, true );
+ if (securityManager.equals(System.getSecurityManager())) {
+ String successMessage = server.localizeMessage(
+ "DRDA_SecurityInstalled.I", null);
+ server.consoleMessage(successMessage, true);
+ }
}
/**
@@ -782,8 +784,21 @@ public class NetworkServerControl{
private static String getCodeSourcePrefix( NetworkServerControlImpl server )
throws Exception
{
- String derbyNetURL = NetworkServerControl.class.getProtectionDomain().getCodeSource().getLocation().toExternalForm();
- int idx = derbyNetURL.indexOf( DERBYNET_JAR );
+ // Note: This method is expected to run only when no security manager
+ // has been installed, hence no use of privileged blocks.
+ ProtectionDomain pd = NetworkServerControl.class.getProtectionDomain();
+ CodeSource cs = pd.getCodeSource();
+ if (cs == null) {
+ return null;
+ }
+ URL url = cs.getLocation();
+ if (url == null) {
+ return null;
+ }
+ // Replace in "file://some", but not in "file:///some".
+ String extForm = url.toExternalForm().replaceFirst(
+ "^file://([^/].*)", "file:////$1");
+ int idx = extForm.indexOf(DERBYNET_JAR);
//
// If the customer isn't running against jar files, our Basic policy
@@ -800,7 +815,7 @@ public class NetworkServerControl{
//
// Otherwise, we have the directory prefix for our url.
//
- String directoryPrefix = derbyNetURL.substring( 0, idx );
+ String directoryPrefix = extForm.substring(0, idx);
return directoryPrefix;
}