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 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
         0: .line 47
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
      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 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
         0: .line 54
            aload 0 /* this */
            new java.io.ByteArrayOutputStream
            dup
            invokespecial java.io.ByteArrayOutputStream.<init>:()V
            putfield com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.errorOutput:Ljava/io/ByteArrayOutputStream;
         1: .line 55
            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 /* testPath */
        start local 1 // java.lang.String testPath
         2: .line 56
            aload 0 /* this */
            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 /* testPath */
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            aload 0 /* this */
            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: .line 57
            return
        end local 1 // java.lang.String testPath
        end local 0 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
      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 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
         0: .line 61
            aload 0 /* this */
            getfield com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.context:Lorg/graalvm/polyglot/Context;
            ifnull 3
         1: .line 62
            aload 0 /* this */
            getfield com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.context:Lorg/graalvm/polyglot/Context;
            invokevirtual org.graalvm.polyglot.Context.close:()V
         2: .line 63
            aload 0 /* this */
            aconst_null
            putfield com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.context:Lorg/graalvm/polyglot/Context;
         3: .line 65
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.errorOutput:Ljava/io/ByteArrayOutputStream;
            invokevirtual java.io.ByteArrayOutputStream.reset:()V
         4: .line 66
            return
        end local 0 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
      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 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
         0: .line 70
            aload 0 /* this */
            aconst_null
            invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForInvalidHost:(Ljava/lang/String;)V
         1: .line 71
            return
        end local 0 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
      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 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
         0: .line 75
            aload 0 /* this */
            ldc "evil.example.com"
            invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForInvalidHost:(Ljava/lang/String;)V
         1: .line 76
            return
        end local 0 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
      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 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
         0: .line 80
            aload 0 /* this */
            ldc "evil.example.com:9229"
            invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForInvalidHost:(Ljava/lang/String;)V
         1: .line 81
            return
        end local 0 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
      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 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
         0: .line 85
            aload 0 /* this */
            ldc "evil.example.com:9228"
            invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForInvalidHost:(Ljava/lang/String;)V
         1: .line 86
            return
        end local 0 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
      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 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
         0: .line 90
            aload 0 /* this */
            ldc "127.0.0.1"
            invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForValidAddress:(Ljava/lang/String;)V
         1: .line 91
            return
        end local 0 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
      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 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
         0: .line 95
            aload 0 /* this */
            ldc "[::1]"
            invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForValidAddress:(Ljava/lang/String;)V
         1: .line 96
            return
        end local 0 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
      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 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
         0: .line 100
            aload 0 /* this */
            ldc "localhost"
            invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForValidAddress:(Ljava/lang/String;)V
         1: .line 101
            return
        end local 0 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
      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 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
         0: .line 105
            aload 0 /* this */
            ldc "192.168.6.6"
            invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForValidAddress:(Ljava/lang/String;)V
         1: .line 106
            return
        end local 0 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
      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 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
         0: .line 110
            aload 0 /* this */
            ldc "1.2.3.4"
            invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForValidAddress:(Ljava/lang/String;)V
         1: .line 111
            return
        end local 0 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
      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 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
         0: .line 115
            aload 0 /* this */
            ldc "[2001:0db8:85a3:0000:0000:8a2e:0370:7334]"
            invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForValidAddress:(Ljava/lang/String;)V
         1: .line 116
            return
        end local 0 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
      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 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
         0: .line 120
            aload 0 /* this */
            ldc "[2001:0db8:85a3::0370:7334]"
            invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForValidAddress:(Ljava/lang/String;)V
         1: .line 121
            return
        end local 0 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
      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 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
        start local 1 // java.lang.String address
         0: .line 124
            aload 0 /* this */
            aload 1 /* address */
            invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForValidHost:(Ljava/lang/String;)V
         1: .line 125
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            aload 1 /* address */
            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: .line 126
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            aload 1 /* address */
            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: .line 127
            return
        end local 1 // java.lang.String address
        end local 0 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
      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 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
        start local 1 // java.lang.String host
         0: .line 130
            aload 0 /* this */
            aload 1 /* host */
            iconst_0
            invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForHost:(Ljava/lang/String;Z)V
         1: .line 131
            return
        end local 1 // java.lang.String host
        end local 0 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
      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 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
        start local 1 // java.lang.String host
         0: .line 134
            aload 0 /* this */
            aload 1 /* host */
            iconst_1
            invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForHost:(Ljava/lang/String;Z)V
         1: .line 135
            return
        end local 1 // java.lang.String host
        end local 0 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
      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 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
        start local 1 // java.lang.String host
        start local 2 // boolean valid
         0: .line 138
            aload 0 /* this */
            aload 1 /* host */
            ldc "/"
            iload 2 /* valid */
            invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebind:(Ljava/lang/String;Ljava/lang/String;Z)V
         1: .line 139
            aload 0 /* this */
            aload 1 /* host */
            ldc "/json"
            iload 2 /* valid */
            invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebind:(Ljava/lang/String;Ljava/lang/String;Z)V
         2: .line 140
            aload 0 /* this */
            aload 1 /* host */
            ldc "/json/version"
            iload 2 /* valid */
            invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebind:(Ljava/lang/String;Ljava/lang/String;Z)V
         3: .line 141
            aload 0 /* this */
            aload 1 /* host */
            ldc "/some-nonsense"
            iload 2 /* valid */
            invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebind:(Ljava/lang/String;Ljava/lang/String;Z)V
         4: .line 142
            return
        end local 2 // boolean valid
        end local 1 // java.lang.String host
        end local 0 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
      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 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
        start local 1 // java.lang.String host
        start local 2 // java.lang.String path
        start local 3 // boolean valid
         0: .line 145
            aload 0 /* this */
            ldc "host"
            aload 1 /* host */
            aload 2 /* path */
            iload 3 /* valid */
            invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForHostCapitalization:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
         1: .line 146
            aload 0 /* this */
            ldc "Host"
            aload 1 /* host */
            aload 2 /* path */
            iload 3 /* valid */
            invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForHostCapitalization:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
         2: .line 147
            aload 0 /* this */
            ldc "HoSt"
            aload 1 /* host */
            aload 2 /* path */
            iload 3 /* valid */
            invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForHostCapitalization:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
         3: .line 148
            aload 0 /* this */
            ldc "HOST"
            aload 1 /* host */
            aload 2 /* path */
            iload 3 /* valid */
            invokevirtual com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.testDnsRebindForHostCapitalization:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
         4: .line 149
            return
        end local 3 // boolean valid
        end local 2 // java.lang.String path
        end local 1 // java.lang.String host
        end local 0 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
      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 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
        start local 1 // java.lang.String hostCapitalization
        start local 2 // java.lang.String host
        start local 3 // java.lang.String path
        start local 4 // boolean valid
         0: .line 154
            aconst_null
            astore 5
            aconst_null
            astore 6
         1: .line 155
            new java.net.Socket
            dup
            ldc "127.0.0.1"
            sipush 9229
            invokespecial java.net.Socket.<init>:(Ljava/lang/String;I)V
            astore 7 /* socket */
        start local 7 // java.net.Socket socket
         2: .line 156
            new java.io.OutputStreamWriter
            dup
            aload 7 /* socket */
            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 /* out */
        start local 8 // java.io.OutputStreamWriter out
         3: .line 157
            aload 7 /* socket */
            invokevirtual java.net.Socket.getInputStream:()Ljava/io/InputStream;
            astore 9 /* in */
        start local 9 // java.io.InputStream in
         4: .line 160
            aload 8 /* out */
            new java.lang.StringBuilder
            dup
            ldc "GET "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* path */
            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: .line 161
            ldc "User-Agent: Test\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         6: .line 162
            aload 2 /* host */
            ifnull 7
            new java.lang.StringBuilder
            dup
            aload 1 /* hostCapitalization */
            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 /* host */
            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: .line 163
            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: .line 164
            ldc "\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        11: .line 160
            invokevirtual java.io.OutputStreamWriter.write:(Ljava/lang/String;)V
        12: .line 165
            aload 8 /* out */
            invokevirtual java.io.OutputStreamWriter.flush:()V
        13: .line 167
            aload 9 /* in */
            invokestatic com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.readAsciiLine:(Ljava/io/InputStream;)Ljava/lang/String;
            astore 10 /* httpStatus */
        start local 10 // java.lang.String httpStatus
        14: .line 168
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 11 /* headers */
        start local 11 // java.util.Set headers
        15: .line 170
            iconst_m1
            istore 13 /* length */
        start local 13 // int length
        16: .line 171
            goto 21
        start local 12 // java.lang.String line
        17: .line 173
      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 /* line */
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            ldc "content-length:"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 19
        18: .line 174
            aload 12 /* line */
            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 /* length */
        19: .line 176
      StackMap locals:
      StackMap stack:
            aload 12 /* line */
            invokestatic org.junit.Assert.assertNotNull:(Ljava/lang/Object;)V
        20: .line 177
            aload 11 /* headers */
            aload 12 /* line */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 12 // java.lang.String line
        21: .line 171
      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 /* in */
            invokestatic com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.readAsciiLine:(Ljava/io/InputStream;)Ljava/lang/String;
            dup
            astore 12 /* line */
        start local 12 // java.lang.String line
        22: invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 17
        23: .line 179
            ldc -1
            iload 13 /* length */
            i2l
            invokestatic org.junit.Assert.assertNotEquals:(JJ)V
        24: .line 180
            aload 9 /* in */
            iload 13 /* length */
            invokestatic com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.readBytes:(Ljava/io/InputStream;I)[B
            astore 14 /* rawBody */
        start local 14 // byte[] rawBody
        25: .line 181
            new java.lang.String
            dup
            aload 14 /* rawBody */
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokespecial java.lang.String.<init>:([BLjava/nio/charset/Charset;)V
            astore 15 /* body */
        start local 15 // java.lang.String body
        26: .line 182
            aload 2 /* host */
            ifnull 27
            new java.lang.StringBuilder
            dup
            ldc "Bad host "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* host */
            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 /* badHost */
        start local 16 // java.lang.String badHost
        29: .line 183
            new java.lang.StringBuilder
            dup
            aload 16 /* badHost */
            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 /* errorMessage */
        start local 17 // java.lang.String errorMessage
        30: .line 184
            iload 4 /* valid */
            ifeq 34
        31: .line 185
            ldc "HTTP/1.1 400 Bad Request "
            aload 10 /* httpStatus */
            invokestatic org.junit.Assert.assertNotEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        32: .line 186
            aload 17 /* errorMessage */
            aload 15 /* body */
            invokestatic org.junit.Assert.assertNotEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        33: .line 187
            goto 37
        34: .line 188
      StackMap locals: java.lang.String java.lang.String
      StackMap stack:
            ldc "HTTP/1.1 400 Bad Request "
            aload 10 /* httpStatus */
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        35: .line 189
            aload 17 /* errorMessage */
            aload 15 /* body */
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        36: .line 190
            aload 0 /* this */
            getfield com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest.errorOutput:Ljava/io/ByteArrayOutputStream;
            invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
            aload 17 /* errorMessage */
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            pop
        end local 17 // java.lang.String errorMessage
        end local 16 // java.lang.String badHost
        end local 15 // java.lang.String body
        end local 14 // byte[] rawBody
        end local 13 // int length
        end local 12 // java.lang.String line
        end local 11 // java.util.Set headers
        end local 10 // java.lang.String httpStatus
        37: .line 192
      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 /* in */
            ifnull 40
            aload 9 /* in */
            invokevirtual java.io.InputStream.close:()V
            goto 40
      StackMap locals:
      StackMap stack: java.lang.Throwable
        38: astore 5
            aload 9 /* in */
            ifnull 39
            aload 9 /* in */
            invokevirtual java.io.InputStream.close:()V
        end local 9 // java.io.InputStream in
      StackMap locals:
      StackMap stack:
        39: aload 5
            athrow
      StackMap locals:
      StackMap stack:
        40: aload 8 /* out */
            ifnull 45
            aload 8 /* out */
            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 /* out */
            ifnull 44
            aload 8 /* out */
            invokevirtual java.io.OutputStreamWriter.close:()V
        end local 8 // java.io.OutputStreamWriter out
      StackMap locals:
      StackMap stack:
        44: aload 5
            athrow
      StackMap locals:
      StackMap stack:
        45: aload 7 /* socket */
            ifnull 53
            aload 7 /* socket */
            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 /* socket */
            ifnull 49
            aload 7 /* socket */
            invokevirtual java.net.Socket.close:()V
        end local 7 // java.net.Socket socket
      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: .line 193
      StackMap locals:
      StackMap stack:
            return
        end local 4 // boolean valid
        end local 3 // java.lang.String path
        end local 2 // java.lang.String host
        end local 1 // java.lang.String hostCapitalization
        end local 0 // com.oracle.truffle.tools.chromeinspector.test.InspectorDnsRebindAttackTest this
      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 // java.io.InputStream in
         0: .line 196
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 1 /* sb */
        start local 1 // java.lang.StringBuilder sb
         1: .line 198
            goto 4
        start local 2 // int c
         2: .line 199
      StackMap locals: java.lang.StringBuilder int
      StackMap stack:
            iload 2 /* c */
            i2l
            ldc -1
            invokestatic org.junit.Assert.assertNotEquals:(JJ)V
         3: .line 200
            aload 1 /* sb */
            iload 2 /* c */
            i2c
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        end local 2 // int c
         4: .line 198
      StackMap locals:
      StackMap stack:
            aload 0 /* in */
            invokevirtual java.io.InputStream.read:()I
            dup
            istore 2 /* c */
        start local 2 // int c
         5: bipush 10
            if_icmpne 2
         6: .line 202
            aload 1 /* sb */
            aload 1 /* sb */
            invokevirtual java.lang.StringBuilder.length:()I
            iconst_1
            isub
            invokevirtual java.lang.StringBuilder.charAt:(I)C
            bipush 13
            if_icmpne 8
         7: .line 203
            aload 1 /* sb */
            aload 1 /* sb */
            invokevirtual java.lang.StringBuilder.length:()I
            iconst_1
            isub
            invokevirtual java.lang.StringBuilder.setLength:(I)V
         8: .line 205
      StackMap locals: int
      StackMap stack:
            aload 1 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 2 // int c
        end local 1 // java.lang.StringBuilder sb
        end local 0 // java.io.InputStream in
      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 // java.io.InputStream in
        start local 1 // int length
         0: .line 209
            iload 1 /* length */
            istore 2 /* missing */
        start local 2 // int missing
         1: .line 210
            iconst_0
            istore 3 /* pos */
        start local 3 // int pos
         2: .line 211
            iload 1 /* length */
            newarray 8
            astore 4 /* buffer */
        start local 4 // byte[] buffer
         3: .line 212
            goto 9
         4: .line 213
      StackMap locals: int int byte[]
      StackMap stack:
            aload 0 /* in */
            aload 4 /* buffer */
            iload 3 /* pos */
            iload 2 /* missing */
            invokevirtual java.io.InputStream.read:([BII)I
            istore 5 /* read */
        start local 5 // int read
         5: .line 214
            iload 5 /* read */
            iconst_m1
            if_icmpne 7
         6: .line 215
            new java.io.EOFException
            dup
            invokespecial java.io.EOFException.<init>:()V
            athrow
         7: .line 217
      StackMap locals: int
      StackMap stack:
            iload 2 /* missing */
            iload 5 /* read */
            isub
            istore 2 /* missing */
         8: .line 218
            iload 3 /* pos */
            iload 5 /* read */
            iadd
            istore 3 /* pos */
        end local 5 // int read
         9: .line 212
      StackMap locals:
      StackMap stack:
            iload 2 /* missing */
            ifgt 4
        10: .line 220
            aload 4 /* buffer */
            areturn
        end local 4 // byte[] buffer
        end local 3 // int pos
        end local 2 // int missing
        end local 1 // int length
        end local 0 // java.io.InputStream in
      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