Mercurial > hg > graal-jvmci-8
diff src/share/vm/classfile/classFileParser.cpp @ 17574:5f7e12f5b4e5
8036800: Attribute OOM to correct part of code
Summary: checks that the attribute_length does not exceed the length of remaining data in the class file
Reviewed-by: coleenp, ahgross
author | hseigel |
---|---|
date | Wed, 19 Mar 2014 14:02:51 -0400 |
parents | 9b289963cb9a |
children | f0d759a6a230 |
line wrap: on
line diff
--- a/src/share/vm/classfile/classFileParser.cpp Mon Mar 17 10:17:55 2014 -0400 +++ b/src/share/vm/classfile/classFileParser.cpp Wed Mar 19 14:02:51 2014 -0400 @@ -2770,18 +2770,19 @@ ClassFileStream* cfs = stream(); u1* current_start = cfs->current(); - cfs->guarantee_more(2, CHECK); // length + guarantee_property(attribute_byte_length > sizeof(u2), + "Invalid BootstrapMethods attribute length %u in class file %s", + attribute_byte_length, + CHECK); + + cfs->guarantee_more(attribute_byte_length, CHECK); + int attribute_array_length = cfs->get_u2_fast(); guarantee_property(_max_bootstrap_specifier_index < attribute_array_length, "Short length on BootstrapMethods in class file %s", CHECK); - guarantee_property(attribute_byte_length > sizeof(u2), - "Invalid BootstrapMethods attribute length %u in class file %s", - attribute_byte_length, - CHECK); - // The attribute contains a counted array of counted tuples of shorts, // represending bootstrap specifiers: // length*{bootstrap_method_index, argument_count*{argument_index}}