public class com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest
super_class: java.lang.Object
{
private org.graalvm.polyglot.Context context;
descriptor: Lorg/graalvm/polyglot/Context;
flags: (0x0002) ACC_PRIVATE
private java.io.ByteArrayOutputStream errorOutput;
descriptor: Ljava/io/ByteArrayOutputStream;
flags: (0x0002) ACC_PRIVATE
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/tools/chromeinspector/test/InspectorDnsRebindAttackTest;
public void setUp();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=1
start local 0 0: aload 0
new java.io.ByteArrayOutputStream
dup
invokespecial java.io.ByteArrayOutputStream.<init>:()V
putfield com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.errorOutput:Ljava/io/ByteArrayOutputStream;
1: new java.lang.StringBuilder
dup
ldc "testPath-"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
invokestatic com.oracle.truffle.tools.chromeinspector.test.SecureInspectorPathGenerator.getToken:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 1
start local 1 2: aload 0
iconst_0
anewarray java.lang.String
invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
ldc "inspect.Path"
aload 1
invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
aload 0
getfield com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.errorOutput:Ljava/io/ByteArrayOutputStream;
invokevirtual org.graalvm.polyglot.Context$Builder.err:(Ljava/io/OutputStream;)Lorg/graalvm/polyglot/Context$Builder;
invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
putfield com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.context:Lorg/graalvm/polyglot/Context;
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/oracle/truffle/tools/chromeinspector/test/InspectorDnsRebindAttackTest;
2 4 1 testPath Ljava/lang/String;
RuntimeVisibleAnnotations:
org.junit.Before()
public void tearDown();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.context:Lorg/graalvm/polyglot/Context;
ifnull 3
1: aload 0
getfield com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.context:Lorg/graalvm/polyglot/Context;
invokevirtual org.graalvm.polyglot.Context.close:()V
2: aload 0
aconst_null
putfield com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.context:Lorg/graalvm/polyglot/Context;
3: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.errorOutput:Ljava/io/ByteArrayOutputStream;
invokevirtual java.io.ByteArrayOutputStream.reset:()V
4: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/oracle/truffle/tools/chromeinspector/test/InspectorDnsRebindAttackTest;
RuntimeVisibleAnnotations:
org.junit.After()
public void testMissingHost();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
aconst_null
invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForInvalidHost:(Ljava/lang/String;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/tools/chromeinspector/test/InspectorDnsRebindAttackTest;
Exceptions:
throws java.io.IOException
RuntimeVisibleAnnotations:
org.junit.Test()
public void testInvalidHostWithoutPort();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ldc "evil.example.com"
invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForInvalidHost:(Ljava/lang/String;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/tools/chromeinspector/test/InspectorDnsRebindAttackTest;
Exceptions:
throws java.io.IOException
RuntimeVisibleAnnotations:
org.junit.Test()
public void testInvalidHostWithStandardPort();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ldc "evil.example.com:9229"
invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForInvalidHost:(Ljava/lang/String;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/tools/chromeinspector/test/InspectorDnsRebindAttackTest;
Exceptions:
throws java.io.IOException
RuntimeVisibleAnnotations:
org.junit.Test()
public void testInvalidHostWithNonstandardPort();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ldc "evil.example.com:9228"
invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForInvalidHost:(Ljava/lang/String;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/tools/chromeinspector/test/InspectorDnsRebindAttackTest;
Exceptions:
throws java.io.IOException
RuntimeVisibleAnnotations:
org.junit.Test()
public void testLocalhostIpv4();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ldc "127.0.0.1"
invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForValidAddress:(Ljava/lang/String;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/tools/chromeinspector/test/InspectorDnsRebindAttackTest;
Exceptions:
throws java.io.IOException
RuntimeVisibleAnnotations:
org.junit.Test()
public void testLocalhostIpv6();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ldc "[::1]"
invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForValidAddress:(Ljava/lang/String;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/tools/chromeinspector/test/InspectorDnsRebindAttackTest;
Exceptions:
throws java.io.IOException
RuntimeVisibleAnnotations:
org.junit.Test()
public void testLocalhostHostname();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ldc "localhost"
invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForValidAddress:(Ljava/lang/String;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/tools/chromeinspector/test/InspectorDnsRebindAttackTest;
Exceptions:
throws java.io.IOException
RuntimeVisibleAnnotations:
org.junit.Test()
public void testLocalNetworkIp();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ldc "192.168.6.6"
invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForValidAddress:(Ljava/lang/String;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/tools/chromeinspector/test/InspectorDnsRebindAttackTest;
Exceptions:
throws java.io.IOException
RuntimeVisibleAnnotations:
org.junit.Test()
public void testPublicIpv4();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ldc "1.2.3.4"
invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForValidAddress:(Ljava/lang/String;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/tools/chromeinspector/test/InspectorDnsRebindAttackTest;
Exceptions:
throws java.io.IOException
RuntimeVisibleAnnotations:
org.junit.Test()
public void testIpv6Long();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ldc "[2001:0db8:85a3:0000:0000:8a2e:0370:7334]"
invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForValidAddress:(Ljava/lang/String;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/tools/chromeinspector/test/InspectorDnsRebindAttackTest;
Exceptions:
throws java.io.IOException
RuntimeVisibleAnnotations:
org.junit.Test()
public void testIpv6Short();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ldc "[2001:0db8:85a3::0370:7334]"
invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForValidAddress:(Ljava/lang/String;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/tools/chromeinspector/test/InspectorDnsRebindAttackTest;
Exceptions:
throws java.io.IOException
RuntimeVisibleAnnotations:
org.junit.Test()
private void testDnsRebindForValidAddress(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForValidHost:(Ljava/lang/String;)V
1: aload 0
new java.lang.StringBuilder
dup
aload 1
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc ":9229"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForValidHost:(Ljava/lang/String;)V
2: aload 0
new java.lang.StringBuilder
dup
aload 1
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc ":9228"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForValidHost:(Ljava/lang/String;)V
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/oracle/truffle/tools/chromeinspector/test/InspectorDnsRebindAttackTest;
0 4 1 address Ljava/lang/String;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
address
private void testDnsRebindForInvalidHost(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
iconst_0
invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForHost:(Ljava/lang/String;Z)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/tools/chromeinspector/test/InspectorDnsRebindAttackTest;
0 2 1 host Ljava/lang/String;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
host
private void testDnsRebindForValidHost(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
iconst_1
invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForHost:(Ljava/lang/String;Z)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/tools/chromeinspector/test/InspectorDnsRebindAttackTest;
0 2 1 host Ljava/lang/String;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
host
private void testDnsRebindForHost(java.lang.String, boolean);
descriptor: (Ljava/lang/String;Z)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
ldc "/"
iload 2
invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebind:(Ljava/lang/String;Ljava/lang/String;Z)V
1: aload 0
aload 1
ldc "/json"
iload 2
invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebind:(Ljava/lang/String;Ljava/lang/String;Z)V
2: aload 0
aload 1
ldc "/json/version"
iload 2
invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebind:(Ljava/lang/String;Ljava/lang/String;Z)V
3: aload 0
aload 1
ldc "/some-nonsense"
iload 2
invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebind:(Ljava/lang/String;Ljava/lang/String;Z)V
4: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/oracle/truffle/tools/chromeinspector/test/InspectorDnsRebindAttackTest;
0 5 1 host Ljava/lang/String;
0 5 2 valid Z
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
host
valid
private void testDnsRebind(java.lang.String, java.lang.String, boolean);
descriptor: (Ljava/lang/String;Ljava/lang/String;Z)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
ldc "host"
aload 1
aload 2
iload 3
invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForHostCapitalization:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
1: aload 0
ldc "Host"
aload 1
aload 2
iload 3
invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForHostCapitalization:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
2: aload 0
ldc "HoSt"
aload 1
aload 2
iload 3
invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForHostCapitalization:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
3: aload 0
ldc "HOST"
aload 1
aload 2
iload 3
invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForHostCapitalization:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
4: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/oracle/truffle/tools/chromeinspector/test/InspectorDnsRebindAttackTest;
0 5 1 host Ljava/lang/String;
0 5 2 path Ljava/lang/String;
0 5 3 valid Z
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
host
path
valid
private void testDnsRebindForHostCapitalization(java.lang.String, java.lang.String, java.lang.String, boolean);
descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=18, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aconst_null
astore 5
aconst_null
astore 6
1: new java.net.Socket
dup
ldc "127.0.0.1"
sipush 9229
invokespecial java.net.Socket.<init>:(Ljava/lang/String;I)V
astore 7
start local 7 2: new java.io.OutputStreamWriter
dup
aload 7
invokevirtual java.net.Socket.getOutputStream:()Ljava/io/OutputStream;
getstatic java.nio.charset.StandardCharsets.US_ASCII:Ljava/nio/charset/Charset;
invokespecial java.io.OutputStreamWriter.<init>:(Ljava/io/OutputStream;Ljava/nio/charset/Charset;)V
astore 8
start local 8 3: aload 7
invokevirtual java.net.Socket.getInputStream:()Ljava/io/InputStream;
astore 9
start local 9 4: aload 8
new java.lang.StringBuilder
dup
ldc "GET "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc " HTTP/1.1\r\n"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
5: ldc "User-Agent: Test\r\n"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
6: aload 2
ifnull 7
new java.lang.StringBuilder
dup
aload 1
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
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 "\r\n"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
goto 8
StackMap locals: com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest java.lang.String java.lang.String java.lang.String int java.lang.Throwable java.lang.Throwable java.net.Socket java.io.OutputStreamWriter java.io.InputStream
StackMap stack: java.io.OutputStreamWriter java.lang.StringBuilder
7: ldc ""
StackMap locals: com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest java.lang.String java.lang.String java.lang.String int java.lang.Throwable java.lang.Throwable java.net.Socket java.io.OutputStreamWriter java.io.InputStream
StackMap stack: java.io.OutputStreamWriter java.lang.StringBuilder java.lang.String
8: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
9: ldc "Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2\r\n"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
10: ldc "\r\n"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
11: invokevirtual java.io.OutputStreamWriter.write:(Ljava/lang/String;)V
12: aload 8
invokevirtual java.io.OutputStreamWriter.flush:()V
13: aload 9
invokestatic com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.readAsciiLine:(Ljava/io/InputStream;)Ljava/lang/String;
astore 10
start local 10 14: new java.util.HashSet
dup
invokespecial java.util.HashSet.<init>:()V
astore 11
start local 11 15: iconst_m1
istore 13
start local 13 16: goto 21
start local 12 17: StackMap locals: com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest java.lang.String java.lang.String java.lang.String int java.lang.Throwable java.lang.Throwable java.net.Socket java.io.OutputStreamWriter java.io.InputStream java.lang.String java.util.Set java.lang.String int
StackMap stack:
aload 12
invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
ldc "content-length:"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 19
18: aload 12
ldc "content-length:"
invokevirtual java.lang.String.length:()I
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
invokevirtual java.lang.String.trim:()Ljava/lang/String;
invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
istore 13
19: StackMap locals:
StackMap stack:
aload 12
invokestatic org.junit.Assert.assertNotNull:(Ljava/lang/Object;)V
20: aload 11
aload 12
invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
pop
end local 12 21: StackMap locals: com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest java.lang.String java.lang.String java.lang.String int java.lang.Throwable java.lang.Throwable java.net.Socket java.io.OutputStreamWriter java.io.InputStream java.lang.String java.util.Set top int
StackMap stack:
ldc ""
aload 9
invokestatic com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.readAsciiLine:(Ljava/io/InputStream;)Ljava/lang/String;
dup
astore 12
start local 12 22: invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 17
23: ldc -1
iload 13
i2l
invokestatic org.junit.Assert.assertNotEquals:(JJ)V
24: aload 9
iload 13
invokestatic com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.readBytes:(Ljava/io/InputStream;I)[B
astore 14
start local 14 25: new java.lang.String
dup
aload 14
getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
invokespecial java.lang.String.<init>:([BLjava/nio/charset/Charset;)V
astore 15
start local 15 26: aload 2
ifnull 27
new java.lang.StringBuilder
dup
ldc "Bad host "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ". Please use IP address."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
goto 28
StackMap locals: com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest java.lang.String java.lang.String java.lang.String int java.lang.Throwable java.lang.Throwable java.net.Socket java.io.OutputStreamWriter java.io.InputStream java.lang.String java.util.Set java.lang.String int byte[] java.lang.String
StackMap stack:
27: ldc "Missing host header. Use an up-to-date client."
StackMap locals:
StackMap stack: java.lang.String
28: astore 16
start local 16 29: new java.lang.StringBuilder
dup
aload 16
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc " This request cannot be served because it looks like DNS rebind attack."
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 17
start local 17 30: iload 4
ifeq 34
31: ldc "HTTP/1.1 400 Bad Request "
aload 10
invokestatic org.junit.Assert.assertNotEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
32: aload 17
aload 15
invokestatic org.junit.Assert.assertNotEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
33: goto 37
34: StackMap locals: java.lang.String java.lang.String
StackMap stack:
ldc "HTTP/1.1 400 Bad Request "
aload 10
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
35: aload 17
aload 15
invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
36: aload 0
getfield com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.errorOutput:Ljava/io/ByteArrayOutputStream;
invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
aload 17
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
pop
end local 17 end local 16 end local 15 end local 14 end local 13 end local 12 end local 11 end local 10 37: StackMap locals: com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest java.lang.String java.lang.String java.lang.String int java.lang.Throwable java.lang.Throwable java.net.Socket java.io.OutputStreamWriter java.io.InputStream
StackMap stack:
aload 9
ifnull 40
aload 9
invokevirtual java.io.InputStream.close:()V
goto 40
StackMap locals:
StackMap stack: java.lang.Throwable
38: astore 5
aload 9
ifnull 39
aload 9
invokevirtual java.io.InputStream.close:()V
end local 9 StackMap locals:
StackMap stack:
39: aload 5
athrow
StackMap locals:
StackMap stack:
40: aload 8
ifnull 45
aload 8
invokevirtual java.io.OutputStreamWriter.close:()V
goto 45
StackMap locals:
StackMap stack: java.lang.Throwable
41: astore 6
aload 5
ifnonnull 42
aload 6
astore 5
goto 43
StackMap locals:
StackMap stack:
42: aload 5
aload 6
if_acmpeq 43
aload 5
aload 6
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
43: aload 8
ifnull 44
aload 8
invokevirtual java.io.OutputStreamWriter.close:()V
end local 8 StackMap locals:
StackMap stack:
44: aload 5
athrow
StackMap locals:
StackMap stack:
45: aload 7
ifnull 53
aload 7
invokevirtual java.net.Socket.close:()V
goto 53
StackMap locals:
StackMap stack: java.lang.Throwable
46: astore 6
aload 5
ifnonnull 47
aload 6
astore 5
goto 48
StackMap locals:
StackMap stack:
47: aload 5
aload 6
if_acmpeq 48
aload 5
aload 6
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
48: aload 7
ifnull 49
aload 7
invokevirtual java.net.Socket.close:()V
end local 7 StackMap locals:
StackMap stack:
49: aload 5
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
50: astore 6
aload 5
ifnonnull 51
aload 6
astore 5
goto 52
StackMap locals:
StackMap stack:
51: aload 5
aload 6
if_acmpeq 52
aload 5
aload 6
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
52: aload 5
athrow
53: StackMap locals:
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 54 0 this Lcom/oracle/truffle/tools/chromeinspector/test/InspectorDnsRebindAttackTest;
0 54 1 hostCapitalization Ljava/lang/String;
0 54 2 host Ljava/lang/String;
0 54 3 path Ljava/lang/String;
0 54 4 valid Z
2 49 7 socket Ljava/net/Socket;
3 44 8 out Ljava/io/OutputStreamWriter;
4 39 9 in Ljava/io/InputStream;
14 37 10 httpStatus Ljava/lang/String;
15 37 11 headers Ljava/util/Set<Ljava/lang/String;>;
17 21 12 line Ljava/lang/String;
22 37 12 line Ljava/lang/String;
16 37 13 length I
25 37 14 rawBody [B
26 37 15 body Ljava/lang/String;
29 37 16 badHost Ljava/lang/String;
30 37 17 errorMessage Ljava/lang/String;
Exception table:
from to target type
4 37 38 any
3 40 41 any
2 45 46 any
1 50 50 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
hostCapitalization
host
path
valid
private static java.lang.String readAsciiLine(java.io.InputStream);
descriptor: (Ljava/io/InputStream;)Ljava/lang/String;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=3, args_size=1
start local 0 0: new java.lang.StringBuilder
dup
invokespecial java.lang.StringBuilder.<init>:()V
astore 1
start local 1 1: goto 4
start local 2 2: StackMap locals: java.lang.StringBuilder int
StackMap stack:
iload 2
i2l
ldc -1
invokestatic org.junit.Assert.assertNotEquals:(JJ)V
3: aload 1
iload 2
i2c
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
end local 2 4: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.io.InputStream.read:()I
dup
istore 2
start local 2 5: bipush 10
if_icmpne 2
6: aload 1
aload 1
invokevirtual java.lang.StringBuilder.length:()I
iconst_1
isub
invokevirtual java.lang.StringBuilder.charAt:(I)C
bipush 13
if_icmpne 8
7: aload 1
aload 1
invokevirtual java.lang.StringBuilder.length:()I
iconst_1
isub
invokevirtual java.lang.StringBuilder.setLength:(I)V
8: StackMap locals: int
StackMap stack:
aload 1
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 in Ljava/io/InputStream;
1 9 1 sb Ljava/lang/StringBuilder;
2 4 2 c I
5 9 2 c I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
in
private static byte[] readBytes(java.io.InputStream, int);
descriptor: (Ljava/io/InputStream;I)[B
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=6, args_size=2
start local 0 start local 1 0: iload 1
istore 2
start local 2 1: iconst_0
istore 3
start local 3 2: iload 1
newarray 8
astore 4
start local 4 3: goto 9
4: StackMap locals: int int byte[]
StackMap stack:
aload 0
aload 4
iload 3
iload 2
invokevirtual java.io.InputStream.read:([BII)I
istore 5
start local 5 5: iload 5
iconst_m1
if_icmpne 7
6: new java.io.EOFException
dup
invokespecial java.io.EOFException.<init>:()V
athrow
7: StackMap locals: int
StackMap stack:
iload 2
iload 5
isub
istore 2
8: iload 3
iload 5
iadd
istore 3
end local 5 9: StackMap locals:
StackMap stack:
iload 2
ifgt 4
10: aload 4
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 in Ljava/io/InputStream;
0 11 1 length I
1 11 2 missing I
2 11 3 pos I
3 11 4 buffer [B
5 9 5 read I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
in
length
}
SourceFile: "InspectorDnsRebindAttackTest.java"
InnerClasses:
public final Builder = org.graalvm.polyglot.Context$Builder of org.graalvm.polyglot.Context