public class com.mchange.v2.c3p0.cfg.DefaultC3P0ConfigFinder implements com.mchange.v2.c3p0.cfg.C3P0ConfigFinder
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.mchange.v2.c3p0.cfg.DefaultC3P0ConfigFinder
super_class: java.lang.Object
{
static final java.lang.String XML_CFG_FILE_KEY;
descriptor: Ljava/lang/String;
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: "com.mchange.v2.c3p0.cfg.xml"
static final java.lang.String XML_CFG_EXPAND_ENTITY_REFS_KEY;
descriptor: Ljava/lang/String;
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: "com.mchange.v2.c3p0.cfg.xml.expandEntityReferences"
static final java.lang.String XML_CFG_USE_PERMISSIVE_PARSER_KEY;
descriptor: Ljava/lang/String;
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: "com.mchange.v2.c3p0.cfg.xml.usePermissiveParser"
static final java.lang.String CLASSLOADER_RESOURCE_PREFIX;
descriptor: Ljava/lang/String;
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: "classloader:"
static final com.mchange.v2.log.MLogger logger;
descriptor: Lcom/mchange/v2/log/MLogger;
flags: (0x0018) ACC_STATIC, ACC_FINAL
final boolean warn_of_xml_overrides;
descriptor: Z
flags: (0x0010) ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lcom/mchange/v2/c3p0/cfg/DefaultC3P0ConfigFinder;
invokestatic com.mchange.v2.log.MLog.getLogger:(Ljava/lang/Class;)Lcom/mchange/v2/log/MLogger;
putstatic com.mchange.v2.c3p0.cfg.DefaultC3P0ConfigFinder.logger:Lcom/mchange/v2/log/MLogger;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(boolean);
descriptor: (Z)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
iload 1
putfield com.mchange.v2.c3p0.cfg.DefaultC3P0ConfigFinder.warn_of_xml_overrides:Z
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/mchange/v2/c3p0/cfg/DefaultC3P0ConfigFinder;
0 2 1 warn_of_xml_overrides Z
MethodParameters:
Name Flags
warn_of_xml_overrides
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
iconst_0
invokespecial com.mchange.v2.c3p0.cfg.DefaultC3P0ConfigFinder.<init>:(Z)V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/mchange/v2/c3p0/cfg/DefaultC3P0ConfigFinder;
public com.mchange.v2.c3p0.cfg.C3P0Config findConfig();
descriptor: ()Lcom/mchange/v2/c3p0/cfg/C3P0Config;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=10, args_size=1
start local 0 0: invokestatic com.mchange.v2.c3p0.cfg.C3P0ConfigUtils.extractHardcodedC3P0Defaults:()Ljava/util/HashMap;
astore 2
start local 2 1: aload 2
invokestatic com.mchange.v2.c3p0.cfg.C3P0ConfigUtils.extractC3P0PropertiesResources:()Ljava/util/HashMap;
invokevirtual java.util.HashMap.putAll:(Ljava/util/Map;)V
2: ldc "com.mchange.v2.c3p0.cfg.xml"
invokestatic com.mchange.v2.c3p0.cfg.C3P0Config.getPropsFileConfigProperty:(Ljava/lang/String;)Ljava/lang/String;
astore 3
start local 3 3: aload 0
invokevirtual com.mchange.v2.c3p0.cfg.DefaultC3P0ConfigFinder.findUsePermissiveParser:()Z
istore 4
start local 4 4: aload 3
ifnonnull 13
5: iload 4
invokestatic com.mchange.v2.c3p0.cfg.C3P0ConfigXmlUtils.extractXmlConfigFromDefaultResource:(Z)Lcom/mchange/v2/c3p0/cfg/C3P0Config;
astore 5
start local 5 6: aload 5
ifnull 11
7: aload 0
aload 2
aload 5
invokevirtual com.mchange.v2.c3p0.cfg.DefaultC3P0ConfigFinder.insertDefaultsUnderNascentConfig:(Ljava/util/HashMap;Lcom/mchange/v2/c3p0/cfg/C3P0Config;)V
8: aload 5
astore 1
start local 1 9: aload 0
ldc "resource"
ldc "/c3p0-config.xml"
invokevirtual com.mchange.v2.c3p0.cfg.DefaultC3P0ConfigFinder.mbOverrideWarning:(Ljava/lang/String;Ljava/lang/String;)V
10: goto 43
end local 1 11: StackMap locals: com.mchange.v2.c3p0.cfg.DefaultC3P0ConfigFinder top java.util.HashMap java.lang.String int com.mchange.v2.c3p0.cfg.C3P0Config
StackMap stack:
aload 2
invokestatic com.mchange.v2.c3p0.cfg.C3P0ConfigUtils.configFromFlatDefaults:(Ljava/util/HashMap;)Lcom/mchange/v2/c3p0/cfg/C3P0Config;
astore 1
end local 5 start local 1 12: goto 43
end local 1 13: StackMap locals:
StackMap stack:
aload 3
invokevirtual java.lang.String.trim:()Ljava/lang/String;
astore 3
14: aconst_null
astore 5
start local 5 15: aload 3
ldc "classloader:"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 27
16: aload 0
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
astore 6
start local 6 17: aload 3
ldc "classloader:"
invokevirtual java.lang.String.length:()I
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
astore 7
start local 7 18: aload 7
ldc "/"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 20
19: aload 7
iconst_1
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
astore 7
20: StackMap locals: java.io.InputStream java.lang.ClassLoader java.lang.String
StackMap stack:
aload 6
aload 7
invokevirtual java.lang.ClassLoader.getResourceAsStream:(Ljava/lang/String;)Ljava/io/InputStream;
astore 5
21: aload 5
ifnonnull 25
22: new java.io.FileNotFoundException
dup
new java.lang.StringBuilder
dup
ldc "Specified ClassLoader resource '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 7
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "' could not be found. "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
23: ldc "[ Found in configuration: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "com.mchange.v2.c3p0.cfg.xml"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
bipush 61
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " ]"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
24: invokespecial java.io.FileNotFoundException.<init>:(Ljava/lang/String;)V
athrow
25: StackMap locals:
StackMap stack:
aload 0
ldc "resource"
aload 7
invokevirtual com.mchange.v2.c3p0.cfg.DefaultC3P0ConfigFinder.mbOverrideWarning:(Ljava/lang/String;Ljava/lang/String;)V
end local 7 end local 6 26: goto 29
27: StackMap locals:
StackMap stack:
new java.io.BufferedInputStream
dup
new java.io.FileInputStream
dup
aload 3
invokespecial java.io.FileInputStream.<init>:(Ljava/lang/String;)V
invokespecial java.io.BufferedInputStream.<init>:(Ljava/io/InputStream;)V
astore 5
28: aload 0
ldc "file"
aload 3
invokevirtual com.mchange.v2.c3p0.cfg.DefaultC3P0ConfigFinder.mbOverrideWarning:(Ljava/lang/String;Ljava/lang/String;)V
29: StackMap locals:
StackMap stack:
aload 5
iload 4
invokestatic com.mchange.v2.c3p0.cfg.C3P0ConfigXmlUtils.extractXmlConfigFromInputStream:(Ljava/io/InputStream;Z)Lcom/mchange/v2/c3p0/cfg/C3P0Config;
astore 6
start local 6 30: aload 0
aload 2
aload 6
invokevirtual com.mchange.v2.c3p0.cfg.DefaultC3P0ConfigFinder.insertDefaultsUnderNascentConfig:(Ljava/util/HashMap;Lcom/mchange/v2/c3p0/cfg/C3P0Config;)V
31: aload 6
astore 1
end local 6 start local 1 32: goto 39
end local 1 33: StackMap locals:
StackMap stack: java.lang.Throwable
astore 8
34: aload 5
ifnull 38
aload 5
invokevirtual java.io.InputStream.close:()V
35: goto 38
36: StackMap locals: com.mchange.v2.c3p0.cfg.DefaultC3P0ConfigFinder top java.util.HashMap java.lang.String int java.io.InputStream top top java.lang.Throwable
StackMap stack: java.lang.Exception
astore 9
start local 9 37: aload 9
invokevirtual java.lang.Exception.printStackTrace:()V
end local 9 38: StackMap locals:
StackMap stack:
aload 8
athrow
start local 1 39: StackMap locals: com.mchange.v2.c3p0.cfg.DefaultC3P0ConfigFinder com.mchange.v2.c3p0.cfg.C3P0Config java.util.HashMap java.lang.String int java.io.InputStream
StackMap stack:
aload 5
ifnull 43
aload 5
invokevirtual java.io.InputStream.close:()V
40: goto 43
41: StackMap locals:
StackMap stack: java.lang.Exception
astore 9
start local 9 42: aload 9
invokevirtual java.lang.Exception.printStackTrace:()V
end local 9 end local 5 43: StackMap locals:
StackMap stack:
invokestatic com.mchange.v2.c3p0.cfg.C3P0ConfigUtils.findAllC3P0SystemProperties:()Ljava/util/Properties;
astore 5
start local 5 44: aload 1
getfield com.mchange.v2.c3p0.cfg.C3P0Config.defaultConfig:Lcom/mchange/v2/c3p0/cfg/NamedScope;
getfield com.mchange.v2.c3p0.cfg.NamedScope.props:Ljava/util/HashMap;
aload 5
invokevirtual java.util.HashMap.putAll:(Ljava/util/Map;)V
45: aload 1
areturn
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 46 0 this Lcom/mchange/v2/c3p0/cfg/DefaultC3P0ConfigFinder;
9 11 1 out Lcom/mchange/v2/c3p0/cfg/C3P0Config;
12 13 1 out Lcom/mchange/v2/c3p0/cfg/C3P0Config;
32 33 1 out Lcom/mchange/v2/c3p0/cfg/C3P0Config;
39 46 1 out Lcom/mchange/v2/c3p0/cfg/C3P0Config;
1 46 2 flatDefaults Ljava/util/HashMap;
3 46 3 cfgFile Ljava/lang/String;
4 46 4 usePermissiveParser Z
6 12 5 xmlConfig Lcom/mchange/v2/c3p0/cfg/C3P0Config;
15 43 5 is Ljava/io/InputStream;
17 26 6 cl Ljava/lang/ClassLoader;
18 26 7 rsrcPath Ljava/lang/String;
30 32 6 xmlConfig Lcom/mchange/v2/c3p0/cfg/C3P0Config;
37 38 9 e Ljava/lang/Exception;
42 43 9 e Ljava/lang/Exception;
44 46 5 sysPropConfig Ljava/util/Properties;
Exception table:
from to target type
15 33 33 any
34 35 36 Class java.lang.Exception
39 40 41 Class java.lang.Exception
Exceptions:
throws java.lang.Exception
private void insertDefaultsUnderNascentConfig(java.util.HashMap, com.mchange.v2.c3p0.cfg.C3P0Config);
descriptor: (Ljava/util/HashMap;Lcom/mchange/v2/c3p0/cfg/C3P0Config;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 1
aload 2
getfield com.mchange.v2.c3p0.cfg.C3P0Config.defaultConfig:Lcom/mchange/v2/c3p0/cfg/NamedScope;
getfield com.mchange.v2.c3p0.cfg.NamedScope.props:Ljava/util/HashMap;
invokevirtual java.util.HashMap.putAll:(Ljava/util/Map;)V
1: aload 2
getfield com.mchange.v2.c3p0.cfg.C3P0Config.defaultConfig:Lcom/mchange/v2/c3p0/cfg/NamedScope;
aload 1
putfield com.mchange.v2.c3p0.cfg.NamedScope.props:Ljava/util/HashMap;
2: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/mchange/v2/c3p0/cfg/DefaultC3P0ConfigFinder;
0 3 1 flatDefaults Ljava/util/HashMap;
0 3 2 config Lcom/mchange/v2/c3p0/cfg/C3P0Config;
MethodParameters:
Name Flags
flatDefaults
config
private void mbOverrideWarning(java.lang.String, java.lang.String);
descriptor: (Ljava/lang/String;Ljava/lang/String;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield com.mchange.v2.c3p0.cfg.DefaultC3P0ConfigFinder.warn_of_xml_overrides:Z
ifeq 2
getstatic com.mchange.v2.c3p0.cfg.DefaultC3P0ConfigFinder.logger:Lcom/mchange/v2/log/MLogger;
getstatic com.mchange.v2.log.MLevel.WARNING:Lcom/mchange/v2/log/MLevel;
invokeinterface com.mchange.v2.log.MLogger.isLoggable:(Lcom/mchange/v2/log/MLevel;)Z
ifeq 2
1: getstatic com.mchange.v2.c3p0.cfg.DefaultC3P0ConfigFinder.logger:Lcom/mchange/v2/log/MLogger;
getstatic com.mchange.v2.log.MLevel.WARNING:Lcom/mchange/v2/log/MLevel;
new java.lang.StringBuilder
dup
ldc "Configuation defined in "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "'"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "' overrides all other c3p0 config."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface com.mchange.v2.log.MLogger.log:(Lcom/mchange/v2/log/MLevel;Ljava/lang/String;)V
2: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/mchange/v2/c3p0/cfg/DefaultC3P0ConfigFinder;
0 3 1 srcType Ljava/lang/String;
0 3 2 srcName Ljava/lang/String;
MethodParameters:
Name Flags
srcType
srcName
private static boolean affirmativelyTrue(java.lang.String);
descriptor: (Ljava/lang/String;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ifnull 1
aload 0
invokevirtual java.lang.String.trim:()Ljava/lang/String;
ldc "true"
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifeq 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 propStr Ljava/lang/String;
MethodParameters:
Name Flags
propStr
private boolean findUsePermissiveParser();
descriptor: ()Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=5, args_size=1
start local 0 0: ldc "com.mchange.v2.c3p0.cfg.xml.expandEntityReferences"
invokestatic com.mchange.v2.c3p0.cfg.C3P0Config.getPropsFileConfigProperty:(Ljava/lang/String;)Ljava/lang/String;
invokestatic com.mchange.v2.c3p0.cfg.DefaultC3P0ConfigFinder.affirmativelyTrue:(Ljava/lang/String;)Z
istore 1
start local 1 1: ldc "com.mchange.v2.c3p0.cfg.xml.usePermissiveParser"
invokestatic com.mchange.v2.c3p0.cfg.C3P0Config.getPropsFileConfigProperty:(Ljava/lang/String;)Ljava/lang/String;
invokestatic com.mchange.v2.c3p0.cfg.DefaultC3P0ConfigFinder.affirmativelyTrue:(Ljava/lang/String;)Z
istore 2
start local 2 2: iload 2
ifne 3
iload 1
ifne 3
iconst_0
goto 4
StackMap locals: int int
StackMap stack:
3: iconst_1
StackMap locals:
StackMap stack: int
4: istore 3
start local 3 5: iload 3
ifeq 26
getstatic com.mchange.v2.c3p0.cfg.DefaultC3P0ConfigFinder.logger:Lcom/mchange/v2/log/MLogger;
getstatic com.mchange.v2.log.MLevel.WARNING:Lcom/mchange/v2/log/MLevel;
invokeinterface com.mchange.v2.log.MLogger.isLoggable:(Lcom/mchange/v2/log/MLevel;)Z
ifeq 26
6: iload 1
ifeq 15
7: getstatic com.mchange.v2.c3p0.cfg.DefaultC3P0ConfigFinder.logger:Lcom/mchange/v2/log/MLogger;
getstatic com.mchange.v2.log.MLevel.WARNING:Lcom/mchange/v2/log/MLevel;
8: ldc "You have set the configuration property 'com.mchange.v2.c3p0.cfg.xml.expandEntityReferences', which has been deprecated, to true. Please use 'com.mchange.v2.c3p0.cfg.xml.usePermissiveParser' instead. Please be aware that permissive parsing enables inline document type definitions, XML inclusions, and other fetures!"
9: invokeinterface com.mchange.v2.log.MLogger.log:(Lcom/mchange/v2/log/MLevel;Ljava/lang/String;)V
10: iload 2
ifeq 13
11: ldc "Configuration property 'com.mchange.v2.c3p0.cfg.xml.usePermissiveParser'"
astore 4
start local 4 12: goto 16
end local 4 13: StackMap locals: int
StackMap stack:
ldc "Configuration property 'com.mchange.v2.c3p0.cfg.xml.expandEntityReferences' (deprecated)"
astore 4
start local 4 14: goto 16
end local 4 15: StackMap locals:
StackMap stack:
ldc "Configuration property 'com.mchange.v2.c3p0.cfg.xml.usePermissiveParser'"
astore 4
start local 4 16: StackMap locals: java.lang.String
StackMap stack:
getstatic com.mchange.v2.c3p0.cfg.DefaultC3P0ConfigFinder.logger:Lcom/mchange/v2/log/MLogger;
getstatic com.mchange.v2.log.MLevel.WARNING:Lcom/mchange/v2/log/MLevel;
17: new java.lang.StringBuilder
dup
aload 4
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " is set to 'true'. "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
18: ldc "Entity references will be resolved in XML c3p0 configuration files, doctypes and xml includes will be permitted, the file will in general be parsed very permissively. "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
19: ldc "This may be a security hazard. "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
20: ldc "Be sure you understand your XML config files, including the full transitive closure of entity references and incusions. "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
21: ldc "See CVE-2018-20433, https://nvd.nist.gov/vuln/detail/CVE-2018-20433 / "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
22: ldc "See also https://github.com/OWASP/CheatSheetSeries/blob/31c94f233c40af4237432008106f42a9c4bff05e/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.md / "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
23: ldc "See also https://vsecurity.com//download/papers/XMLDTDEntityAttacks.pdf"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
24: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
25: invokeinterface com.mchange.v2.log.MLogger.log:(Lcom/mchange/v2/log/MLevel;Ljava/lang/String;)V
end local 4 26: StackMap locals:
StackMap stack:
iload 3
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 this Lcom/mchange/v2/c3p0/cfg/DefaultC3P0ConfigFinder;
1 27 1 deprecatedExpandEntityRefs Z
2 27 2 usePermissiveParser Z
5 27 3 out Z
12 13 4 warningKey Ljava/lang/String;
14 15 4 warningKey Ljava/lang/String;
16 26 4 warningKey Ljava/lang/String;
}
SourceFile: "DefaultC3P0ConfigFinder.java"