8207768: Improve exception messages during manifest parsing of jar archives

Reviewed-by: clanger, mullan, weijun
This commit is contained in:
Matthias Baesken 2018-09-12 11:13:09 +02:00
parent 19ca9280a6
commit be56cc5bf3
6 changed files with 151 additions and 52 deletions

View file

@ -30,43 +30,14 @@ import java.lang.reflect.Constructor;
import java.net.InetSocketAddress;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.security.Security;
import sun.security.util.SecurityProperties;
public final class SocketExceptions {
private SocketExceptions() {}
/**
* Security or system property which specifies categories of
* (potentially sensitive) information that may be included
* in exception text. This class only defines one category:
* "hostInfo" which represents the hostname and port number
* of the remote peer relating to a socket exception.
* The property value is a comma separated list of
* case insignificant category names.
*/
private static final String enhancedTextPropname = "jdk.includeInExceptions";
private static final boolean enhancedExceptionText = initTextProp();
private static boolean initTextProp() {
return AccessController.doPrivileged(new PrivilegedAction<Boolean>() {
public Boolean run() {
String val = System.getProperty(enhancedTextPropname);
if (val == null) {
val = Security.getProperty(enhancedTextPropname);
if (val == null)
return false;
}
String[] tokens = val.split(",");
for (String token : tokens) {
if (token.equalsIgnoreCase("hostinfo"))
return true;
}
return false;
}
});
}
private static final boolean enhancedExceptionText =
SecurityProperties.includedInExceptions("hostInfo");
/**
* Utility which takes an exception and returns either the same exception
@ -74,8 +45,9 @@ public final class SocketExceptions {
* and detail message enhanced with addressing information from the
* given InetSocketAddress.
*
* If the system/security property "jdk.net.enhanceExceptionText" is not
* set or is false, then the original exception is returned.
* If the system/security property "jdk.includeInExceptions" is not
* set or does not contain the category hostInfo,
* then the original exception is returned.
*
* Only specific IOException subtypes are supported.
*/