view test/runtime/classFileParserBug/badEnclMthd.jcod @ 8692:2963c44aa1f5

8130183: InnerClasses: VM permits wrong inner_class_info_index value of zero Summary: Throw ClassFormatError if InnerClasses attribute's inner_class_info_index is 0 Reviewed-by: acorn, lfoltan
author hseigel
date Thu, 09 Jul 2015 08:36:37 -0400
parents
children
line wrap: on
line source
/*
 * Copyright (c) 2015, 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.
 *
 */

// Source: badEnclMthd
class badEnclMthd {
    0xCAFEBABE;
    0; // minor version
    50; // major version
    [] { // Constant Pool
        ; // first element is empty
        Utf8 "badEnclMthd"; // #1
        class #1; // #2
        Utf8 "java/lang/Object"; // #3
        class #3; // #4
        Utf8 "InnerClasses"; // #5
        Utf8 "badEnclMthd"; // #6
        class #6; // #7
        Utf8 "badEnclMthd"; // #8
        class #8; // #9
    } // Constant Pool
    0x0001; // access  public
    #2;// this_cpx
    #4;// super_cpx
    [] { // interfaces
    } // interfaces
    [] { // fields
    } // fields
    [] { // methods
    } // methods
    [] { // attributes
        Attr(#5) { // InnerClasses
            [] { // InnerClasses
                #0 #2 #6 1;  // Bad inner_class_info_index of 0 !!!
                #9 #0 #8 1;
            }
        } // end InnerClasses
        ;
    } // attributes
} // end class badEnclMthd