This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hi, Both Tom and Michael had some comments on my last patch to set the http agent for HTTP connections. I believe the following patch addresses both concerns and makes sure that even when the Connection class is loaded/initialized from a class with not enough permissions it can still get at the necessary system properties. 2004-07-11 Mark Wielaard <mark@klomp.org> * java/lang/System.java (static): Set http.agent system property when not yet set. * gnu/java/net/protocol/http/Connection.java (static): Get httpAgent from system property inside AccessController.doPrivileged() call. Sorry for not handling this before 0.10 got released. OK to commit? Cheers, Mark
Index: gnu/java/net/protocol/http/Connection.java =================================================================== RCS file: /cvsroot/classpath/classpath/gnu/java/net/protocol/http/Connection.java,v retrieving revision 1.17 diff -u -r1.17 Connection.java --- gnu/java/net/protocol/http/Connection.java 27 Jun 2004 19:37:10 -0000 1.17 +++ gnu/java/net/protocol/http/Connection.java 11 Jul 2004 20:46:24 -0000 @@ -1,5 +1,6 @@ /* HttpURLConnection.java -- URLConnection class for HTTP protocol - Copyright (C) 1998, 1999, 2000, 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004 + Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -52,6 +53,8 @@ import java.net.Socket; import java.net.URL; import java.net.URLConnection; +import java.security.AccessController; +import java.security.PrivilegedAction; import java.util.HashMap; import java.util.Iterator; import java.util.Map; @@ -76,41 +79,45 @@ * The socket we are connected to */ private Socket socket; - private static int proxyPort = 80; - private static boolean proxyInUse = false; - private static String proxyHost = null; - - private static final String userAgent; + + // Properties depeending on system properties settings + static int proxyPort = 80; + static boolean proxyInUse = false; + static String proxyHost = null; + static String userAgent; static { - // Recognize some networking properties listed at - // http://java.sun.com/j2se/1.4/docs/guide/net/properties.html. - String port = null; - proxyHost = System.getProperty("http.proxyHost"); - if (proxyHost != null) - { - proxyInUse = true; - if ((port = System.getProperty("http.proxyPort")) != null) - { - try - { - proxyPort = Integer.parseInt(port); - } - catch (Throwable t) - { - // Nothing. - } - } - } + // Make sure access control for system properties depends only on + // our class ProtectionDomain, not on any (indirect) callers. + AccessController.doPrivileged(new PrivilegedAction() { + public Object run() + { + // Recognize some networking properties listed at + // http://java.sun.com/j2se/1.4/docs/guide/net/properties.html. + String port = null; + proxyHost = System.getProperty("http.proxyHost"); + if (proxyHost != null) + { + proxyInUse = true; + if ((port = System.getProperty("http.proxyPort")) != null) + { + try + { + proxyPort = Integer.parseInt(port); + } + catch (Throwable t) + { + // Nothing. + } + } + } + + userAgent = System.getProperty("http.agent"); - userAgent = "gnu-classpath/" - + System.getProperty("gnu.classpath.version") - + " (" - + System.getProperty("gnu.classpath.vm.shortname") - + "/" - + System.getProperty("java.vm.version") - + ")"; + return null; + } + }); } /** Index: java/lang/System.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/lang/System.java,v retrieving revision 1.37 diff -u -r1.37 System.java --- java/lang/System.java 8 Jul 2004 14:40:32 -0000 1.37 +++ java/lang/System.java 11 Jul 2004 20:46:24 -0000 @@ -1,5 +1,6 @@ /* System.java -- useful methods to interface with the system - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 + Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -95,6 +96,20 @@ defaultProperties.put("gnu.classpath.vm.shortname", value); } + // Network properties + if (defaultProperties.get("http.agent") == null) + { + String userAgent + = ("gnu-classpath/" + + defaultProperties.getProperty("gnu.classpath.version") + + " (" + + defaultProperties.getProperty("gnu.classpath.vm.shortname") + + "/" + + defaultProperties.getProperty("java.vm.version") + + ")"); + defaultProperties.put("http.agent", userAgent); + } + defaultProperties.put("gnu.cpu.endian", VMSystem.isWordsBigEndian() ? "big" : "little");
Attachment:
signature.asc
Description: This is a digitally signed message part
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |