public final class org.apache.tomcat.util.buf.UDecoder
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: org.apache.tomcat.util.buf.UDecoder
super_class: java.lang.Object
{
private static final org.apache.tomcat.util.res.StringManager sm;
descriptor: Lorg/apache/tomcat/util/res/StringManager;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.io.IOException EXCEPTION_EOF;
descriptor: Ljava/io/IOException;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.io.IOException EXCEPTION_NOT_HEX_DIGIT;
descriptor: Ljava/io/IOException;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.io.IOException EXCEPTION_SLASH;
descriptor: Ljava/io/IOException;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static volatile int[] $SWITCH_TABLE$org$apache$tomcat$util$buf$EncodedSolidusHandling;
descriptor: [I
flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: ldc Lorg/apache/tomcat/util/buf/UDecoder;
invokestatic org.apache.tomcat.util.res.StringManager.getManager:(Ljava/lang/Class;)Lorg/apache/tomcat/util/res/StringManager;
putstatic org.apache.tomcat.util.buf.UDecoder.sm:Lorg/apache/tomcat/util/res/StringManager;
1: new org.apache.tomcat.util.buf.UDecoder$DecodeException
dup
getstatic org.apache.tomcat.util.buf.UDecoder.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "uDecoder.eof"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
invokespecial org.apache.tomcat.util.buf.UDecoder$DecodeException.<init>:(Ljava/lang/String;)V
putstatic org.apache.tomcat.util.buf.UDecoder.EXCEPTION_EOF:Ljava/io/IOException;
2: new org.apache.tomcat.util.buf.UDecoder$DecodeException
dup
3: ldc "isHexDigit"
4: invokespecial org.apache.tomcat.util.buf.UDecoder$DecodeException.<init>:(Ljava/lang/String;)V
putstatic org.apache.tomcat.util.buf.UDecoder.EXCEPTION_NOT_HEX_DIGIT:Ljava/io/IOException;
5: new org.apache.tomcat.util.buf.UDecoder$DecodeException
dup
6: ldc "noSlash"
7: invokespecial org.apache.tomcat.util.buf.UDecoder$DecodeException.<init>:(Ljava/lang/String;)V
putstatic org.apache.tomcat.util.buf.UDecoder.EXCEPTION_SLASH:Ljava/io/IOException;
8: return
LocalVariableTable:
Start End Slot Name Signature
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 Lorg/apache/tomcat/util/buf/UDecoder;
public void convert(org.apache.tomcat.util.buf.ByteChunk, boolean);
descriptor: (Lorg/apache/tomcat/util/buf/ByteChunk;Z)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: iload 2
ifeq 3
1: aload 0
aload 1
iconst_1
getstatic org.apache.tomcat.util.buf.EncodedSolidusHandling.DECODE:Lorg/apache/tomcat/util/buf/EncodedSolidusHandling;
invokevirtual org.apache.tomcat.util.buf.UDecoder.convert:(Lorg/apache/tomcat/util/buf/ByteChunk;ZLorg/apache/tomcat/util/buf/EncodedSolidusHandling;)V
2: goto 4
3: StackMap locals:
StackMap stack:
aload 0
aload 1
iconst_0
getstatic org.apache.tomcat.util.buf.EncodedSolidusHandling.REJECT:Lorg/apache/tomcat/util/buf/EncodedSolidusHandling;
invokevirtual org.apache.tomcat.util.buf.UDecoder.convert:(Lorg/apache/tomcat/util/buf/ByteChunk;ZLorg/apache/tomcat/util/buf/EncodedSolidusHandling;)V
4: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/apache/tomcat/util/buf/UDecoder;
0 5 1 mb Lorg/apache/tomcat/util/buf/ByteChunk;
0 5 2 query Z
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
mb
query
public void convert(org.apache.tomcat.util.buf.ByteChunk, org.apache.tomcat.util.buf.EncodedSolidusHandling);
descriptor: (Lorg/apache/tomcat/util/buf/ByteChunk;Lorg/apache/tomcat/util/buf/EncodedSolidusHandling;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
iconst_0
aload 2
invokevirtual org.apache.tomcat.util.buf.UDecoder.convert:(Lorg/apache/tomcat/util/buf/ByteChunk;ZLorg/apache/tomcat/util/buf/EncodedSolidusHandling;)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/apache/tomcat/util/buf/UDecoder;
0 2 1 mb Lorg/apache/tomcat/util/buf/ByteChunk;
0 2 2 encodedSolidusHandling Lorg/apache/tomcat/util/buf/EncodedSolidusHandling;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
mb
encodedSolidusHandling
private void convert(org.apache.tomcat.util.buf.ByteChunk, boolean, org.apache.tomcat.util.buf.EncodedSolidusHandling);
descriptor: (Lorg/apache/tomcat/util/buf/ByteChunk;ZLorg/apache/tomcat/util/buf/EncodedSolidusHandling;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=13, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
invokevirtual org.apache.tomcat.util.buf.ByteChunk.getOffset:()I
istore 4
start local 4 1: aload 1
invokevirtual org.apache.tomcat.util.buf.ByteChunk.getBytes:()[B
astore 5
start local 5 2: aload 1
invokevirtual org.apache.tomcat.util.buf.ByteChunk.getEnd:()I
istore 6
start local 6 3: aload 5
iload 4
iload 6
bipush 37
invokestatic org.apache.tomcat.util.buf.ByteChunk.findByte:([BIIB)I
istore 7
start local 7 4: iconst_m1
istore 8
start local 8 5: iload 2
ifeq 9
6: aload 5
iload 4
iload 7
iflt 7
iload 7
goto 8
StackMap locals: org.apache.tomcat.util.buf.UDecoder org.apache.tomcat.util.buf.ByteChunk int org.apache.tomcat.util.buf.EncodedSolidusHandling int byte[] int int int
StackMap stack: byte[] int
7: iload 6
StackMap locals: org.apache.tomcat.util.buf.UDecoder org.apache.tomcat.util.buf.ByteChunk int org.apache.tomcat.util.buf.EncodedSolidusHandling int byte[] int int int
StackMap stack: byte[] int int
8: bipush 43
invokestatic org.apache.tomcat.util.buf.ByteChunk.findByte:([BIIB)I
istore 8
9: StackMap locals:
StackMap stack:
iload 7
ifge 11
iload 8
ifge 11
10: return
11: StackMap locals:
StackMap stack:
iload 8
iflt 12
iload 8
iload 7
if_icmplt 13
StackMap locals:
StackMap stack:
12: iload 7
ifge 14
13: StackMap locals:
StackMap stack:
iload 8
istore 7
14: StackMap locals:
StackMap stack:
iload 7
istore 9
start local 9 15: goto 41
16: StackMap locals: int
StackMap stack:
aload 5
iload 9
baload
bipush 43
if_icmpne 19
iload 2
ifeq 19
17: aload 5
iload 7
bipush 32
bastore
18: goto 40
StackMap locals:
StackMap stack:
19: aload 5
iload 9
baload
bipush 37
if_icmpeq 22
20: aload 5
iload 7
aload 5
iload 9
baload
bastore
21: goto 40
22: StackMap locals:
StackMap stack:
iload 9
iconst_2
iadd
iload 6
if_icmplt 24
23: getstatic org.apache.tomcat.util.buf.UDecoder.EXCEPTION_EOF:Ljava/io/IOException;
athrow
24: StackMap locals:
StackMap stack:
aload 5
iload 9
iconst_1
iadd
baload
istore 10
start local 10 25: aload 5
iload 9
iconst_2
iadd
baload
istore 11
start local 11 26: iload 10
invokestatic org.apache.tomcat.util.buf.UDecoder.isHexDigit:(I)Z
ifeq 27
iload 11
invokestatic org.apache.tomcat.util.buf.UDecoder.isHexDigit:(I)Z
ifne 28
27: StackMap locals: int int
StackMap stack:
getstatic org.apache.tomcat.util.buf.UDecoder.EXCEPTION_NOT_HEX_DIGIT:Ljava/io/IOException;
athrow
28: StackMap locals:
StackMap stack:
iinc 9 2
29: iload 10
iload 11
invokestatic org.apache.tomcat.util.buf.UDecoder.x2c:(BB)I
istore 12
start local 12 30: iload 12
bipush 47
if_icmpne 39
31: invokestatic org.apache.tomcat.util.buf.UDecoder.$SWITCH_TABLE$org$apache$tomcat$util$buf$EncodedSolidusHandling:()[I
aload 3
invokevirtual org.apache.tomcat.util.buf.EncodedSolidusHandling.ordinal:()I
iaload
tableswitch { // 1 - 3
1: 32
2: 34
3: 35
default: 38
}
32: StackMap locals: int
StackMap stack:
aload 5
iload 7
iload 12
i2b
bastore
33: goto 40
34: StackMap locals:
StackMap stack:
getstatic org.apache.tomcat.util.buf.UDecoder.EXCEPTION_SLASH:Ljava/io/IOException;
athrow
35: StackMap locals:
StackMap stack:
aload 5
iload 7
iinc 7 1
aload 5
iload 9
iconst_2
isub
baload
bastore
36: aload 5
iload 7
iinc 7 1
aload 5
iload 9
iconst_1
isub
baload
bastore
37: aload 5
iload 7
aload 5
iload 9
baload
bastore
38: StackMap locals:
StackMap stack:
goto 40
39: StackMap locals:
StackMap stack:
aload 5
iload 7
iload 12
i2b
bastore
end local 12 end local 11 end local 10 40: StackMap locals:
StackMap stack:
iinc 9 1
iinc 7 1
StackMap locals:
StackMap stack:
41: iload 9
iload 6
if_icmplt 16
end local 9 42: aload 1
iload 7
invokevirtual org.apache.tomcat.util.buf.ByteChunk.setEnd:(I)V
43: return
end local 8 end local 7 end local 6 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 44 0 this Lorg/apache/tomcat/util/buf/UDecoder;
0 44 1 mb Lorg/apache/tomcat/util/buf/ByteChunk;
0 44 2 query Z
0 44 3 encodedSolidusHandling Lorg/apache/tomcat/util/buf/EncodedSolidusHandling;
1 44 4 start I
2 44 5 buff [B
3 44 6 end I
4 44 7 idx I
5 44 8 idx2 I
15 42 9 j I
25 40 10 b1 B
26 40 11 b2 B
30 40 12 res I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
mb
query
encodedSolidusHandling
public static java.lang.String URLDecode(java.lang.String, java.nio.charset.Charset);
descriptor: (Ljava/lang/String;Ljava/nio/charset/Charset;)Ljava/lang/String;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=8, locals=10, args_size=2
start local 0 start local 1 0: aload 0
ifnonnull 2
1: aconst_null
areturn
2: StackMap locals:
StackMap stack:
aload 0
bipush 37
invokevirtual java.lang.String.indexOf:(I)I
iconst_m1
if_icmpne 4
3: aload 0
areturn
4: StackMap locals:
StackMap stack:
aload 1
ifnonnull 6
5: getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
astore 1
6: StackMap locals:
StackMap stack:
new java.io.ByteArrayOutputStream
dup
aload 0
invokevirtual java.lang.String.length:()I
iconst_2
imul
invokespecial java.io.ByteArrayOutputStream.<init>:(I)V
astore 2
start local 2 7: new java.io.OutputStreamWriter
dup
aload 2
aload 1
invokespecial java.io.OutputStreamWriter.<init>:(Ljava/io/OutputStream;Ljava/nio/charset/Charset;)V
astore 3
start local 3 8: aload 0
invokevirtual java.lang.String.toCharArray:()[C
astore 4
start local 4 9: aload 4
arraylength
istore 5
start local 5 10: iconst_0
istore 6
start local 6 11: goto 28
12: StackMap locals: java.lang.String java.nio.charset.Charset java.io.ByteArrayOutputStream java.io.OutputStreamWriter char[] int int
StackMap stack:
aload 4
iload 6
iinc 6 1
caload
istore 7
start local 7 13: iload 7
bipush 37
if_icmpne 27
14: aload 3
invokevirtual java.io.OutputStreamWriter.flush:()V
15: iload 6
iconst_2
iadd
iload 5
if_icmple 19
16: new java.lang.IllegalArgumentException
dup
17: getstatic org.apache.tomcat.util.buf.UDecoder.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "uDecoder.urlDecode.missingDigit"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 0
aastore
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
18: invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
19: StackMap locals: int
StackMap stack:
aload 4
iload 6
iinc 6 1
caload
istore 8
start local 8 20: aload 4
iload 6
iinc 6 1
caload
istore 9
start local 9 21: iload 8
invokestatic org.apache.tomcat.util.buf.UDecoder.isHexDigit:(I)Z
ifeq 24
iload 9
invokestatic org.apache.tomcat.util.buf.UDecoder.isHexDigit:(I)Z
ifeq 24
22: aload 2
iload 8
iload 9
invokestatic org.apache.tomcat.util.buf.UDecoder.x2c:(CC)I
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
23: goto 28
24: StackMap locals: int int
StackMap stack:
new java.lang.IllegalArgumentException
dup
25: getstatic org.apache.tomcat.util.buf.UDecoder.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "uDecoder.urlDecode.missingDigit"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 0
aastore
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
26: invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
end local 9 end local 8 27: StackMap locals:
StackMap stack:
aload 3
iload 7
invokevirtual java.io.OutputStreamWriter.append:(C)Ljava/io/Writer;
pop
end local 7 28: StackMap locals:
StackMap stack:
iload 6
iload 5
if_icmplt 12
29: aload 3
invokevirtual java.io.OutputStreamWriter.flush:()V
30: aload 2
aload 1
invokevirtual java.nio.charset.Charset.name:()Ljava/lang/String;
invokevirtual java.io.ByteArrayOutputStream.toString:(Ljava/lang/String;)Ljava/lang/String;
31: areturn
32: StackMap locals:
StackMap stack: java.io.IOException
astore 7
start local 7 33: new java.lang.IllegalArgumentException
dup
34: getstatic org.apache.tomcat.util.buf.UDecoder.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "uDecoder.urlDecode.conversionError"
iconst_2
anewarray java.lang.Object
dup
iconst_0
aload 0
aastore
dup
iconst_1
aload 1
invokevirtual java.nio.charset.Charset.name:()Ljava/lang/String;
aastore
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
aload 7
35: invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 7 end local 6 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 36 0 str Ljava/lang/String;
0 36 1 charset Ljava/nio/charset/Charset;
7 36 2 baos Ljava/io/ByteArrayOutputStream;
8 36 3 osw Ljava/io/OutputStreamWriter;
9 36 4 sourceChars [C
10 36 5 len I
11 36 6 ix I
13 28 7 c C
20 27 8 c1 C
21 27 9 c2 C
33 36 7 ioe Ljava/io/IOException;
Exception table:
from to target type
11 31 32 Class java.io.IOException
MethodParameters:
Name Flags
str
charset
private static boolean isHexDigit(int);
descriptor: (I)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: iload 0
bipush 48
if_icmplt 1
iload 0
bipush 57
if_icmple 5
1: StackMap locals:
StackMap stack:
iload 0
bipush 97
if_icmplt 2
iload 0
bipush 102
if_icmple 5
2: StackMap locals:
StackMap stack:
iload 0
bipush 65
if_icmplt 4
iload 0
bipush 70
3: if_icmple 5
StackMap locals:
StackMap stack:
4: iconst_0
ireturn
StackMap locals:
StackMap stack:
5: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 c I
MethodParameters:
Name Flags
c
private static int x2c(byte, byte);
descriptor: (BB)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: iload 0
bipush 65
if_icmplt 1
iload 0
sipush 223
iand
bipush 65
isub
bipush 10
iadd
goto 2
1: StackMap locals:
StackMap stack:
iload 0
bipush 48
isub
2: StackMap locals:
StackMap stack: int
istore 2
start local 2 3: iload 2
bipush 16
imul
istore 2
4: iload 2
iload 1
bipush 65
if_icmplt 5
iload 1
sipush 223
iand
bipush 65
isub
bipush 10
iadd
goto 6
5: StackMap locals: int int int
StackMap stack: int
iload 1
bipush 48
isub
StackMap locals: int int int
StackMap stack: int int
6: iadd
istore 2
7: iload 2
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 b1 B
0 8 1 b2 B
3 8 2 digit I
MethodParameters:
Name Flags
b1
b2
private static int x2c(char, char);
descriptor: (CC)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: iload 0
bipush 65
if_icmplt 1
iload 0
sipush 223
iand
bipush 65
isub
bipush 10
iadd
goto 2
1: StackMap locals:
StackMap stack:
iload 0
bipush 48
isub
2: StackMap locals:
StackMap stack: int
istore 2
start local 2 3: iload 2
bipush 16
imul
istore 2
4: iload 2
iload 1
bipush 65
if_icmplt 5
iload 1
sipush 223
iand
bipush 65
isub
bipush 10
iadd
goto 6
5: StackMap locals: int int int
StackMap stack: int
iload 1
bipush 48
isub
StackMap locals: int int int
StackMap stack: int int
6: iadd
istore 2
7: iload 2
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 b1 C
0 8 1 b2 C
3 8 2 digit I
MethodParameters:
Name Flags
b1
b2
static int[] $SWITCH_TABLE$org$apache$tomcat$util$buf$EncodedSolidusHandling();
descriptor: ()[I
flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=1, args_size=0
0: getstatic org.apache.tomcat.util.buf.UDecoder.$SWITCH_TABLE$org$apache$tomcat$util$buf$EncodedSolidusHandling:[I
dup
ifnull 1
areturn
StackMap locals:
StackMap stack: int[]
1: pop
invokestatic org.apache.tomcat.util.buf.EncodedSolidusHandling.values:()[Lorg/apache/tomcat/util/buf/EncodedSolidusHandling;
arraylength
newarray 10
astore 0
2: aload 0
getstatic org.apache.tomcat.util.buf.EncodedSolidusHandling.DECODE:Lorg/apache/tomcat/util/buf/EncodedSolidusHandling;
invokevirtual org.apache.tomcat.util.buf.EncodedSolidusHandling.ordinal:()I
iconst_1
iastore
3: goto 5
StackMap locals: int[]
StackMap stack: java.lang.NoSuchFieldError
4: pop
StackMap locals:
StackMap stack:
5: aload 0
getstatic org.apache.tomcat.util.buf.EncodedSolidusHandling.PASS_THROUGH:Lorg/apache/tomcat/util/buf/EncodedSolidusHandling;
invokevirtual org.apache.tomcat.util.buf.EncodedSolidusHandling.ordinal:()I
iconst_3
iastore
6: goto 8
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
7: pop
StackMap locals:
StackMap stack:
8: aload 0
getstatic org.apache.tomcat.util.buf.EncodedSolidusHandling.REJECT:Lorg/apache/tomcat/util/buf/EncodedSolidusHandling;
invokevirtual org.apache.tomcat.util.buf.EncodedSolidusHandling.ordinal:()I
iconst_2
iastore
9: goto 11
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
10: pop
StackMap locals:
StackMap stack:
11: aload 0
dup
putstatic org.apache.tomcat.util.buf.UDecoder.$SWITCH_TABLE$org$apache$tomcat$util$buf$EncodedSolidusHandling:[I
areturn
LocalVariableTable:
Start End Slot Name Signature
Exception table:
from to target type
2 3 4 Class java.lang.NoSuchFieldError
5 6 7 Class java.lang.NoSuchFieldError
8 9 10 Class java.lang.NoSuchFieldError
}
SourceFile: "UDecoder.java"
NestMembers:
org.apache.tomcat.util.buf.UDecoder$DecodeException
InnerClasses:
private DecodeException = org.apache.tomcat.util.buf.UDecoder$DecodeException of org.apache.tomcat.util.buf.UDecoder