8041717: Issue with class file parser
Add better checking for bad values. Reviewed-by: coleenp, lfoltan, mschoene
This commit is contained in:
parent
f203dcbfbf
commit
9f06aa633c
@ -2859,6 +2859,11 @@ void ClassFileParser::parse_classfile_bootstrap_methods_attribute(u4 attribute_b
|
||||
"bootstrap_method_index %u has bad constant type in class file %s",
|
||||
bootstrap_method_index,
|
||||
CHECK);
|
||||
|
||||
guarantee_property((operand_fill_index + 1 + argument_count) < operands->length(),
|
||||
"Invalid BootstrapMethods num_bootstrap_methods or num_bootstrap_arguments value in class file %s",
|
||||
CHECK);
|
||||
|
||||
operands->at_put(operand_fill_index++, bootstrap_method_index);
|
||||
operands->at_put(operand_fill_index++, argument_count);
|
||||
|
||||
@ -2875,8 +2880,6 @@ void ClassFileParser::parse_classfile_bootstrap_methods_attribute(u4 attribute_b
|
||||
}
|
||||
}
|
||||
|
||||
assert(ConstantPool::operand_array_length(operands) == attribute_array_length, "correct decode");
|
||||
|
||||
u1* current_end = cfs->current();
|
||||
guarantee_property(current_end == current_start + attribute_byte_length,
|
||||
"Bad length on BootstrapMethods in class file %s",
|
||||
|
Loading…
x
Reference in New Issue
Block a user