From: Mark Wielaard Date: Fri, 23 Jul 2004 11:49:59 +0000 (+0000) Subject: System.java (static): Set http.agent system property when not yet set. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=392abf6bf98fae1c29d777be3b0eed41c43cd9f6;p=gcc.git System.java (static): Set http.agent system property when not yet set. * 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. (proxyPort): Made package private. (proxyInUse): Likewise. (proxyHost): Likewise. (userAgent): Likewise. From-SVN: r85078 --- diff --git a/libjava/ChangeLog b/libjava/ChangeLog index c237e7f01ea..e9dd6797d34 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,14 @@ +2004-07-23 Mark Wielaard + + * 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. + (proxyPort): Made package private. + (proxyInUse): Likewise. + (proxyHost): Likewise. + (userAgent): Likewise. + 2004-07-23 Mark Wielaard * gnu/java/net/DefaultContentHandlerFactory.java: New dummy diff --git a/libjava/gnu/java/net/protocol/http/Connection.java b/libjava/gnu/java/net/protocol/http/Connection.java index 44239e1721a..728d14a7e6b 100644 --- a/libjava/gnu/java/net/protocol/http/Connection.java +++ b/libjava/gnu/java/net/protocol/http/Connection.java @@ -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.ProtocolException; 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 @@ public final class Connection extends HttpURLConnection * 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; + } + }); } /** diff --git a/libjava/java/lang/System.java b/libjava/java/lang/System.java index d7529871845..a8c0c23c0db 100644 --- a/libjava/java/lang/System.java +++ b/libjava/java/lang/System.java @@ -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. @@ -98,6 +99,20 @@ public final class System 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", isWordsBigEndian() ? "big" : "little");