RFR: JDK-8245432: Lookup::defineHiddenClass should throw UnsupportedClassVersionError if the given bytes are of an unsupported major or minor version
Alan Bateman
Alan.Bateman at oracle.com
Thu May 28 18:11:29 UTC 2020
On 28/05/2020 18:25, Mandy Chung wrote:
> :
>
> The runtime will ensure if --enable-preview is set if a class file
> with minor is loaded. I will prefer to keep
> VM::isSupportedClassFileVersion to validate the given major/minor
> version. At runtime, it will fail when such class file is loaded if
> preview is not enabled.
>
> I'll add a comment to describe that.
>
>> Will readUnsignedShort throw AIOBE if the offset is beyond the length?
>
> Good catch. I add the check to throw CFE.
> + private static int readUnsignedShort(byte[] bytes, int
> offset) {
> + if (offset >= bytes.length) {
> + throw new ClassFormatError("Invalid ClassFile
> structure");
> + }
> + return ((bytes[offset] & 0xFF) << 8) | (bytes[offset
> + 1] & 0xFF);
> + }
>
>> Also are you sure about "& 0xCAFEBABE", I assumed it would just check
>> the magic number is equal to that.
>
> It should check ==. Fixed.
Thanks, this is okay with me.
-Alan.
More information about the core-libs-dev
mailing list