RFR: JDK-8245432: Lookup::defineHiddenClass should throw UnsupportedClassVersionError if the given bytes are of an unsupported major or minor version
Mandy Chung
mandy.chung at oracle.com
Thu May 28 04:13:33 UTC 2020
Updated webrev:
http://cr.openjdk.java.net/~mchung/jdk15/webrevs/8245432/webrev.01/
I modify this patch to check the class file version and throws CFE if
unsupported before creating ClassReader. This also fixes JDK-8245061
that it reads the value of `this_class` as a constant (as ASM will throw
an exception if it's not a constant) and also ensures that `this_class`
is a CONSTANT_Class_info by checking the descriptor string from Type.
Mandy
On 5/27/20 10:57 AM, Mandy Chung wrote:
> I'm reconsidering this fix along with JDK-8245061 that may require to
> do its own checking (a similar issue w.r.t. ASM validation but in this
> case the constant pool entry of `this_class` item is not validated).
>
> thanks
> Mandy
>
> On 5/27/20 10:39 AM, forax at univ-mlv.fr wrote:
>> Hi Alan,
>> We (the ASM team) recommend to our users to check the byte 6 (and
>> perhaps 7) instead of relying on ASM throwing an exception,
>> because you may update the version of ASM but not the visitors your
>> are using in your code.
>>
>> It's less brittle than catching the IAE thrown by ASM.
>>
>> Rémi
>>
>> ----- Mail original -----
>>> De: "Alan Bateman" <Alan.Bateman at oracle.com>
>>> À: "mandy chung" <mandy.chung at oracle.com>, "core-libs-dev"
>>> <core-libs-dev at openjdk.java.net>, "Remi Forax"
>>> <forax at univ-mlv.fr>
>>> Envoyé: Mercredi 27 Mai 2020 18:16:33
>>> Objet: Re: RFR: JDK-8245432: Lookup::defineHiddenClass should throw
>>> UnsupportedClassVersionError if the given bytes are
>>> of an unsupported major or minor version
>>> On 26/05/2020 22:46, Mandy Chung wrote:
>>>> Lookup::defineHiddenClass currently throws IAE by ASM if the given
>>>> bytes are of unsupported class file version. The implementation
>>>> should catch and throw UnsupportedClassVersionError instead.
>>>>
>>>> webrev:
>>>> http://cr.openjdk.java.net/~mchung/jdk15/webrevs/8245432/webrev.00/
>>>>
>>>> This patch also includes a spec clarification of @throws IAE if the
>>>> the bytes has ACC_MODULE flag set to fix JDK-8245596.
>>> Rémi - has there ever been any discussion in ASM about throwing more
>>> specific exceptions? Only asking to see if we could avoid needing to
>>> depend on the exception message here.
>>>
>>> -Alan
>
More information about the core-libs-dev
mailing list