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