Request for approval for CR 6476261 - (reflect) GenericSignatureFormatError When signature includes nested inner classes

Joe Darcy joe.darcy at oracle.com
Fri Sep 2 08:48:25 PDT 2011


Dalibor Topic wrote:
> On 9/1/11 1:11 PM, Joe Darcy wrote:
>   
>> Hello.
>>
>> I hereby request approval to backport a trio of signature parsing fixes from JDK 8 to 7 update:
>>
>>    6476261: (reflect) GenericSignatureFormatError When signature includes nested inner classes
>>    http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6476261
>>
>>    6832374: (reflect) malformed signature can cause parser to go into infinite loop
>>    http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6832374
>>
>>    7052898: (reflect) SignatureParser will accept strings outside of the grammar
>>    http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7052898
>>     
>
> Unfortunately, the last bug comes up as not available for me. Could you describe it in your own words,
> and let us know whether this is a regression, and what its priority is?
>   

Sure; the legal syntax for a throws clause is a proper subset of the 
full FieldTypeSignature production.  The old code did not make that 
distinction, improperly allowing arrays in the throws section.  The new 
code fixes this issue by adding a b0olean argument in 
parseFieldTypeSignature(boolean allowArrays).  The problem is not a 
regression, but is is included as a unit with the other two fixes.

>   
>>    Webrev:
>>    http://cr.openjdk.java.net/~darcy/6476261.0/
>>
>> The code for 7 update is trivially different than the code for JDK 8 since the JDK 8 code takes advantage of a new constructor added to GenericSignatureFormatError; here is the diff to SignatureParser.java:
>>
>> 123,126c123,124
>> <         if (DEBUG)
>> <             System.out.println("Signature Parse error: " + errorMsg +
>> <                                "\n\tRemaining input: " + remainder());
>> <         return new GenericSignatureFormatError();
>> ---
>>     
>>>         return new GenericSignatureFormatError("Signature Parse error: " + errorMsg +
>>>                                                "\n\tRemaining input: " + remainder());
>>>       
>
> Thanks - I am a bit puzzled since the new jdk 8 constructor seems to still be used in the 
> posted webrev.
>   

Sorry; I've posted the 7 update version of the webrev at:

http://cr.openjdk.java.net/~darcy/6476261.7u/

-Joe





More information about the jdk7u-dev mailing list