| /* |
| * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. |
| * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
| * |
| * This code is free software; you can redistribute it and/or modify it |
| * under the terms of the GNU General Public License version 2 only, as |
| * published by the Free Software Foundation. |
| * |
| * This code is distributed in the hope that it will be useful, but WITHOUT |
| * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| * version 2 for more details (a copy is included in the LICENSE file that |
| * accompanied this code). |
| * |
| * You should have received a copy of the GNU General Public License version |
| * 2 along with this work; if not, write to the Free Software Foundation, |
| * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| * |
| * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
| * or visit www.oracle.com if you need additional information or have any |
| * questions. |
| */ |
| |
| // Class containing duplicate Signature attributes. Loading it should cause a |
| // ClassFormatError exception. |
| class DupClassSigAttrs { |
| 0xCAFEBABE; |
| 0; // minor version |
| 53; // version |
| [33] { // Constant Pool |
| ; // first element is empty |
| Method #6 #17; // #1 at 0x0A |
| Field #18 #19; // #2 at 0x0F |
| String #20; // #3 at 0x14 |
| Method #21 #22; // #4 at 0x17 |
| class #23; // #5 at 0x1C |
| class #24; // #6 at 0x1F |
| Utf8 "<init>"; // #7 at 0x22 |
| Utf8 "()V"; // #8 at 0x2B |
| Utf8 "Code"; // #9 at 0x31 |
| Utf8 "LineNumberTable"; // #10 at 0x38 |
| Utf8 "main"; // #11 at 0x4A |
| Utf8 "([Ljava/lang/String;)V"; // #12 at 0x51 |
| Utf8 "Exceptions"; // #13 at 0x6A |
| class #25; // #14 at 0x77 |
| Utf8 "SourceFile"; // #15 at 0x7A |
| Utf8 "DupClassSigAttrs.java"; // #16 at 0x87 |
| NameAndType #7 #8; // #17 at 0x9F |
| class #26; // #18 at 0xA4 |
| NameAndType #27 #28; // #19 at 0xA7 |
| Utf8 "hi"; // #20 at 0xAC |
| class #29; // #21 at 0xB1 |
| NameAndType #30 #31; // #22 at 0xB4 |
| Utf8 "DupClassSigAttrs"; // #23 at 0xB9 |
| Utf8 "java/lang/Object"; // #24 at 0xCC |
| Utf8 "java/lang/Throwable"; // #25 at 0xDF |
| Utf8 "java/lang/System"; // #26 at 0xF5 |
| Utf8 "out"; // #27 at 0x0108 |
| Utf8 "Ljava/io/PrintStream;"; // #28 at 0x010E |
| Utf8 "java/io/PrintStream"; // #29 at 0x0126 |
| Utf8 "println"; // #30 at 0x013C |
| Utf8 "(Ljava/lang/String;)V"; // #31 at 0x0146 |
| Utf8 "Signature"; // #32 at 0x015E |
| } // Constant Pool |
| |
| 0x0021; // access |
| #5;// this_cpx |
| #6;// super_cpx |
| |
| [0] { // Interfaces |
| } // Interfaces |
| |
| [0] { // fields |
| } // fields |
| |
| [2] { // methods |
| { // Member at 0x0176 |
| 0x0001; // access |
| #7; // name_cpx |
| #8; // sig_cpx |
| [1] { // Attributes |
| Attr(#9, 29) { // Code at 0x017E |
| 1; // max_stack |
| 1; // max_locals |
| Bytes[5]{ |
| 0x2AB70001B1; |
| }; |
| [0] { // Traps |
| } // end Traps |
| [1] { // Attributes |
| Attr(#10, 6) { // LineNumberTable at 0x0195 |
| [1] { // LineNumberTable |
| 0 1; // at 0x01A1 |
| } |
| } // end LineNumberTable |
| } // Attributes |
| } // end Code |
| } // Attributes |
| } // Member |
| ; |
| { // Member at 0x01A1 |
| 0x0009; // access |
| #11; // name_cpx |
| #12; // sig_cpx |
| [2] { // Attributes |
| Attr(#9, 37) { // Code at 0x01A9 |
| 2; // max_stack |
| 1; // max_locals |
| Bytes[9]{ |
| 0xB200021203B60004; |
| 0xB1; |
| }; |
| [0] { // Traps |
| } // end Traps |
| [1] { // Attributes |
| Attr(#10, 10) { // LineNumberTable at 0x01C4 |
| [2] { // LineNumberTable |
| 0 4; // at 0x01D0 |
| 8 5; // at 0x01D4 |
| } |
| } // end LineNumberTable |
| } // Attributes |
| } // end Code |
| ; |
| Attr(#13, 4) { // Exceptions at 0x01D4 |
| [1] { // Exceptions |
| #14; // at 0x01DE |
| } |
| } // end Exceptions |
| } // Attributes |
| } // Member |
| } // methods |
| |
| [3] { // Attributes |
| Attr(#15, 2) { // SourceFile at 0x01E0 |
| #16; |
| } // end SourceFile |
| ; |
| Attr(#32, 2) { // Signature at 0x01E8 |
| #16; |
| } // end Signature |
| ; |
| Attr(#32, 2) { // *** Duplicate *** Signature at 0x01F0 |
| #16; |
| } // end Signature |
| } // Attributes |
| } // end class DupClassSigAttrs |
| |
| |
| // Class containing a method with duplicate Signature attributes. Loading it |
| // should cause a ClassFormatError exception. |
| class DupMthSigAttrs { |
| 0xCAFEBABE; |
| 0; // minor version |
| 53; // version |
| [33] { // Constant Pool |
| ; // first element is empty |
| Method #6 #17; // #1 at 0x0A |
| Field #18 #19; // #2 at 0x0F |
| String #20; // #3 at 0x14 |
| Method #21 #22; // #4 at 0x17 |
| class #23; // #5 at 0x1C |
| class #24; // #6 at 0x1F |
| Utf8 "<init>"; // #7 at 0x22 |
| Utf8 "()V"; // #8 at 0x2B |
| Utf8 "Code"; // #9 at 0x31 |
| Utf8 "LineNumberTable"; // #10 at 0x38 |
| Utf8 "main"; // #11 at 0x4A |
| Utf8 "([Ljava/lang/String;)V"; // #12 at 0x51 |
| Utf8 "Exceptions"; // #13 at 0x6A |
| class #25; // #14 at 0x77 |
| Utf8 "SourceFile"; // #15 at 0x7A |
| Utf8 "DupMthSigAttrs.java"; // #16 at 0x87 |
| NameAndType #7 #8; // #17 at 0x9D |
| class #26; // #18 at 0xA2 |
| NameAndType #27 #28; // #19 at 0xA5 |
| Utf8 "hi"; // #20 at 0xAA |
| class #29; // #21 at 0xAF |
| NameAndType #30 #31; // #22 at 0xB2 |
| Utf8 "DupMthSigAttrs"; // #23 at 0xB7 |
| Utf8 "java/lang/Object"; // #24 at 0xC8 |
| Utf8 "java/lang/Throwable"; // #25 at 0xDB |
| Utf8 "java/lang/System"; // #26 at 0xF1 |
| Utf8 "out"; // #27 at 0x0104 |
| Utf8 "Ljava/io/PrintStream;"; // #28 at 0x010A |
| Utf8 "java/io/PrintStream"; // #29 at 0x0122 |
| Utf8 "println"; // #30 at 0x0138 |
| Utf8 "(Ljava/lang/String;)V"; // #31 at 0x0142 |
| Utf8 "Signature"; // #32 at 0x015A |
| } // Constant Pool |
| |
| 0x0021; // access |
| #5;// this_cpx |
| #6;// super_cpx |
| |
| [0] { // Interfaces |
| } // Interfaces |
| |
| [0] { // fields |
| } // fields |
| |
| [2] { // methods |
| { // Member at 0x0172 |
| 0x0001; // access |
| #7; // name_cpx |
| #8; // sig_cpx |
| [1] { // Attributes |
| Attr(#9, 29) { // Code at 0x017A |
| 1; // max_stack |
| 1; // max_locals |
| Bytes[5]{ |
| 0x2AB70001B1; |
| }; |
| [0] { // Traps |
| } // end Traps |
| [1] { // Attributes |
| Attr(#10, 6) { // LineNumberTable at 0x0191 |
| [1] { // LineNumberTable |
| 0 1; // at 0x019D |
| } |
| } // end LineNumberTable |
| } // Attributes |
| } // end Code |
| } // Attributes |
| } // Member |
| ; |
| { // Member at 0x019D |
| 0x0009; // access |
| #11; // name_cpx |
| #12; // sig_cpx |
| [4] { // Attributes |
| Attr(#9, 37) { // Code at 0x01A5 |
| 2; // max_stack |
| 1; // max_locals |
| Bytes[9]{ |
| 0xB200021203B60004; |
| 0xB1; |
| }; |
| [0] { // Traps |
| } // end Traps |
| [1] { // Attributes |
| Attr(#10, 10) { // LineNumberTable at 0x01C0 |
| [2] { // LineNumberTable |
| 0 4; // at 0x01CC |
| 8 5; // at 0x01D0 |
| } |
| } // end LineNumberTable |
| } // Attributes |
| } // end Code |
| ; |
| Attr(#32, 2) { // Signature at 0x01D0 |
| #16; |
| } // end Signature |
| ; |
| Attr(#13, 4) { // Exceptions at 0x01D8 |
| [1] { // Exceptions |
| #14; // at 0x01E2 |
| } |
| } // end Exceptions |
| ; |
| Attr(#32, 2) { // *** Duplicate *** Signature at 0x01E2 |
| #16; |
| } // end Signature |
| } // Attributes |
| } // Member |
| } // methods |
| |
| [1] { // Attributes |
| Attr(#15, 2) { // SourceFile at 0x01EC |
| #16; |
| } // end SourceFile |
| } // Attributes |
| } // end class DupMthSigAttrs |
| |
| |
| // Class containing a field with duplicate Signature attributes. Loading it |
| // should cause a ClassFormatError exception. |
| class DupFldSigAttrs { |
| 0xCAFEBABE; |
| 0; // minor version |
| 53; // version |
| [42] { // Constant Pool |
| ; // first element is empty |
| Method #9 #23; // #1 at 0x0A |
| Field #24 #25; // #2 at 0x0F |
| Field #8 #26; // #3 at 0x14 |
| Method #27 #28; // #4 at 0x19 |
| class #29; // #5 at 0x1E |
| String #30; // #6 at 0x21 |
| Method #5 #31; // #7 at 0x24 |
| class #32; // #8 at 0x29 |
| class #33; // #9 at 0x2C |
| Utf8 "str"; // #10 at 0x2F |
| Utf8 "Ljava/lang/String;"; // #11 at 0x35 |
| Utf8 "<init>"; // #12 at 0x4A |
| Utf8 "()V"; // #13 at 0x53 |
| Utf8 "Code"; // #14 at 0x59 |
| Utf8 "LineNumberTable"; // #15 at 0x60 |
| Utf8 "main"; // #16 at 0x72 |
| Utf8 "([Ljava/lang/String;)V"; // #17 at 0x79 |
| Utf8 "Exceptions"; // #18 at 0x92 |
| class #34; // #19 at 0x9F |
| Utf8 "<clinit>"; // #20 at 0xA2 |
| Utf8 "SourceFile"; // #21 at 0xAD |
| Utf8 "DupFldSigAttrs.java"; // #22 at 0xBA |
| NameAndType #12 #13; // #23 at 0xD0 |
| class #35; // #24 at 0xD5 |
| NameAndType #36 #37; // #25 at 0xD8 |
| NameAndType #10 #11; // #26 at 0xDD |
| class #38; // #27 at 0xE2 |
| NameAndType #39 #40; // #28 at 0xE5 |
| Utf8 "java/lang/String"; // #29 at 0xEA |
| Utf8 "Hi"; // #30 at 0xFD |
| NameAndType #12 #40; // #31 at 0x0102 |
| Utf8 "DupFldSigAttrs"; // #32 at 0x0107 |
| Utf8 "java/lang/Object"; // #33 at 0x0118 |
| Utf8 "java/lang/Throwable"; // #34 at 0x012B |
| Utf8 "java/lang/System"; // #35 at 0x0141 |
| Utf8 "out"; // #36 at 0x0154 |
| Utf8 "Ljava/io/PrintStream;"; // #37 at 0x015A |
| Utf8 "java/io/PrintStream"; // #38 at 0x0172 |
| Utf8 "println"; // #39 at 0x0188 |
| Utf8 "(Ljava/lang/String;)V"; // #40 at 0x0192 |
| Utf8 "Signature"; // #41 at 0x01AA |
| } // Constant Pool |
| |
| 0x0021; // access |
| #8;// this_cpx |
| #9;// super_cpx |
| |
| [0] { // Interfaces |
| } // Interfaces |
| |
| [1] { // fields |
| { // Member at 0x01C0 |
| 0x0008; // access |
| #10; // name_cpx |
| #11; // sig_cpx |
| [2] { // Attributes |
| Attr(#41, 2) { // Signature at 0x01C8 |
| #16; |
| } // end Signature |
| ; |
| Attr(#41, 2) { // *** Duplicate *** Signature at 0x01D0 |
| #16; |
| } // end Signature |
| } // Attributes |
| } // Member |
| } // fields |
| |
| [3] { // methods |
| { // Member at 0x01DA |
| 0x0001; // access |
| #12; // name_cpx |
| #13; // sig_cpx |
| [1] { // Attributes |
| Attr(#14, 29) { // Code at 0x01E2 |
| 1; // max_stack |
| 1; // max_locals |
| Bytes[5]{ |
| 0x2AB70001B1; |
| }; |
| [0] { // Traps |
| } // end Traps |
| [1] { // Attributes |
| Attr(#15, 6) { // LineNumberTable at 0x01F9 |
| [1] { // LineNumberTable |
| 0 1; // at 0x0205 |
| } |
| } // end LineNumberTable |
| } // Attributes |
| } // end Code |
| } // Attributes |
| } // Member |
| ; |
| { // Member at 0x0205 |
| 0x0009; // access |
| #16; // name_cpx |
| #17; // sig_cpx |
| [2] { // Attributes |
| Attr(#14, 38) { // Code at 0x020D |
| 2; // max_stack |
| 1; // max_locals |
| Bytes[10]{ |
| 0xB20002B20003B600; |
| 0x04B1; |
| }; |
| [0] { // Traps |
| } // end Traps |
| [1] { // Attributes |
| Attr(#15, 10) { // LineNumberTable at 0x0229 |
| [2] { // LineNumberTable |
| 0 6; // at 0x0235 |
| 9 7; // at 0x0239 |
| } |
| } // end LineNumberTable |
| } // Attributes |
| } // end Code |
| ; |
| Attr(#18, 4) { // Exceptions at 0x0239 |
| [1] { // Exceptions |
| #19; // at 0x0243 |
| } |
| } // end Exceptions |
| } // Attributes |
| } // Member |
| ; |
| { // Member at 0x0243 |
| 0x0008; // access |
| #20; // name_cpx |
| #13; // sig_cpx |
| [1] { // Attributes |
| Attr(#14, 37) { // Code at 0x024B |
| 3; // max_stack |
| 0; // max_locals |
| Bytes[13]{ |
| 0xBB0005591206B700; |
| 0x07B30003B1; |
| }; |
| [0] { // Traps |
| } // end Traps |
| [1] { // Attributes |
| Attr(#15, 6) { // LineNumberTable at 0x026A |
| [1] { // LineNumberTable |
| 0 3; // at 0x0276 |
| } |
| } // end LineNumberTable |
| } // Attributes |
| } // end Code |
| } // Attributes |
| } // Member |
| } // methods |
| |
| [1] { // Attributes |
| Attr(#21, 2) { // SourceFile at 0x0278 |
| #22; |
| } // end SourceFile |
| } // Attributes |
| } // end class DupFldSigAttrs |
| |
| |
| // Class containing a Signature attribute and a field and methods with Signature |
| // attributes. Since neither the class nor any of its fields or methods have |
| // duplicate Signature attributes, loading this class should not cause a |
| // ClassFormatError exception. |
| class OkaySigAttrs { |
| 0xCAFEBABE; |
| 0; // minor version |
| 53; // version |
| [42] { // Constant Pool |
| ; // first element is empty |
| Method #9 #23; // #1 at 0x0A |
| Field #24 #25; // #2 at 0x0F |
| Field #8 #26; // #3 at 0x14 |
| Method #27 #28; // #4 at 0x19 |
| class #29; // #5 at 0x1E |
| String #30; // #6 at 0x21 |
| Method #5 #31; // #7 at 0x24 |
| class #32; // #8 at 0x29 |
| class #33; // #9 at 0x2C |
| Utf8 "str"; // #10 at 0x2F |
| Utf8 "Ljava/lang/String;"; // #11 at 0x35 |
| Utf8 "<init>"; // #12 at 0x4A |
| Utf8 "()V"; // #13 at 0x53 |
| Utf8 "Code"; // #14 at 0x59 |
| Utf8 "LineNumberTable"; // #15 at 0x60 |
| Utf8 "main"; // #16 at 0x72 |
| Utf8 "([Ljava/lang/String;)V"; // #17 at 0x79 |
| Utf8 "Exceptions"; // #18 at 0x92 |
| class #34; // #19 at 0x9F |
| Utf8 "<clinit>"; // #20 at 0xA2 |
| Utf8 "SourceFile"; // #21 at 0xAD |
| Utf8 "OkaySigAttrs.java"; // #22 at 0xBA |
| NameAndType #12 #13; // #23 at 0xCE |
| class #35; // #24 at 0xD3 |
| NameAndType #36 #37; // #25 at 0xD6 |
| NameAndType #10 #11; // #26 at 0xDB |
| class #38; // #27 at 0xE0 |
| NameAndType #39 #40; // #28 at 0xE3 |
| Utf8 "java/lang/String"; // #29 at 0xE8 |
| Utf8 "Hi"; // #30 at 0xFB |
| NameAndType #12 #40; // #31 at 0x0100 |
| Utf8 "OkaySigAttrs"; // #32 at 0x0105 |
| Utf8 "java/lang/Object"; // #33 at 0x0114 |
| Utf8 "java/lang/Throwable"; // #34 at 0x0127 |
| Utf8 "java/lang/System"; // #35 at 0x013D |
| Utf8 "out"; // #36 at 0x0150 |
| Utf8 "Ljava/io/PrintStream;"; // #37 at 0x0156 |
| Utf8 "java/io/PrintStream"; // #38 at 0x016E |
| Utf8 "println"; // #39 at 0x0184 |
| Utf8 "(Ljava/lang/String;)V"; // #40 at 0x018E |
| Utf8 "Signature"; // #41 at 0x01A6 |
| } // Constant Pool |
| |
| 0x0021; // access |
| #8;// this_cpx |
| #9;// super_cpx |
| |
| [0] { // Interfaces |
| } // Interfaces |
| |
| [1] { // fields |
| { // Member at 0x01BC |
| 0x0008; // access |
| #10; // name_cpx |
| #11; // sig_cpx |
| [1] { // Attributes |
| Attr(#41, 2) { // Signature at 0x01C4 |
| #16; |
| } // end Signature |
| } // Attributes |
| } // Member |
| } // fields |
| |
| [3] { // methods |
| { // Member at 0x01CE |
| 0x0001; // access |
| #12; // name_cpx |
| #13; // sig_cpx |
| [2] { // Attributes |
| Attr(#14, 29) { // Code at 0x01D6 |
| 1; // max_stack |
| 1; // max_locals |
| Bytes[5]{ |
| 0x2AB70001B1; |
| }; |
| [0] { // Traps |
| } // end Traps |
| [1] { // Attributes |
| Attr(#15, 6) { // LineNumberTable at 0x01ED |
| [1] { // LineNumberTable |
| 0 1; // at 0x01F9 |
| } |
| } // end LineNumberTable |
| } // Attributes |
| } // end Code |
| ; |
| Attr(#41, 2) { // Signature at 0x01F9 |
| #16; |
| } // end Signature |
| } // Attributes |
| } // Member |
| ; |
| { // Member at 0x0201 |
| 0x0009; // access |
| #16; // name_cpx |
| #17; // sig_cpx |
| [3] { // Attributes |
| Attr(#14, 38) { // Code at 0x0209 |
| 2; // max_stack |
| 1; // max_locals |
| Bytes[10]{ |
| 0xB20002B20003B600; |
| 0x04B1; |
| }; |
| [0] { // Traps |
| } // end Traps |
| [1] { // Attributes |
| Attr(#15, 10) { // LineNumberTable at 0x0225 |
| [2] { // LineNumberTable |
| 0 6; // at 0x0231 |
| 9 7; // at 0x0235 |
| } |
| } // end LineNumberTable |
| } // Attributes |
| } // end Code |
| ; |
| Attr(#41, 2) { // Signature at 0x0235 |
| #16; |
| } // end Signature |
| ; |
| Attr(#18, 4) { // Exceptions at 0x023D |
| [1] { // Exceptions |
| #19; // at 0x0247 |
| } |
| } // end Exceptions |
| } // Attributes |
| } // Member |
| ; |
| { // Member at 0x0247 |
| 0x0008; // access |
| #20; // name_cpx |
| #13; // sig_cpx |
| [1] { // Attributes |
| Attr(#14, 37) { // Code at 0x024F |
| 3; // max_stack |
| 0; // max_locals |
| Bytes[13]{ |
| 0xBB0005591206B700; |
| 0x07B30003B1; |
| }; |
| [0] { // Traps |
| } // end Traps |
| [1] { // Attributes |
| Attr(#15, 6) { // LineNumberTable at 0x026E |
| [1] { // LineNumberTable |
| 0 3; // at 0x027A |
| } |
| } // end LineNumberTable |
| } // Attributes |
| } // end Code |
| } // Attributes |
| } // Member |
| } // methods |
| |
| [2] { // Attributes |
| Attr(#21, 2) { // SourceFile at 0x027C |
| #22; |
| } // end SourceFile |
| ; |
| Attr(#41, 2) { // Signature at 0x0284 |
| #16; |
| } // end Signature |
| } // Attributes |
| } // end class OkaySigAttrs |