[PATCH][asmtools] Fix incorrect handling of quoted class names by jasm
Maxim Degtyarev
mdegtyarev at gmail.com
Tue Mar 6 16:26:40 UTC 2018
It seems file attach lost somewhere in the middle. Does this mailing
list support attaches?
Here is the patch:
=====
# HG changeset patch
# User maccimo
# Date 1520137328 -10800
# Sun Mar 04 07:22:08 2018 +0300
# Node ID 2704790eab9c060bc0ba3f3c29a31e95379224f4
# Parent 872f704a0d9a0198ae7ce1ae12a676cb180fd424
Fix quoted class names handling bug.
Quoted class names was not prepended by proper package name even if
*.jasm file contains "package" statement.
diff --git a/src/org/openjdk/asmtools/jasm/Parser.java
b/src/org/openjdk/asmtools/jasm/Parser.java
--- a/src/org/openjdk/asmtools/jasm/Parser.java
+++ b/src/org/openjdk/asmtools/jasm/Parser.java
@@ -416,6 +416,7 @@
case STRINGVAL:
v = scanner.stringValue;
scanner.scan();
+ v = prependPackage(v, uncond);
return pool.FindCellAsciz(v);
// Some identifiers might coincide with token names.
// these should be OK to use as identifier names.
@@ -435,12 +436,7 @@
case IDENT:
v = scanner.idValue;
scanner.scan();
- if (uncond || (scanner.token == Token.FIELD)) {
- if ((!v.contains("/")) // class
identifier doesn't contain "/"
- && (!v.contains("["))){ // class
identifier doesn't contain "["
- v = pkgPrefix + v; // add package
- }
- }
+ v = prependPackage(v, uncond);
return pool.FindCellAsciz(v);
default:
ConstType key = Tables.tag(scanner.token.value());
@@ -450,6 +446,16 @@
}
}
+ private String prependPackage(String className, boolean uncond) {
+ if (uncond || (scanner.token == Token.FIELD)) {
+ if ((!className.contains("/")) // class
identifier doesn't contain "/"
+ && (!className.contains("["))){ // class
identifier doesn't contain "["
+ className = pkgPrefix + className; // add package
+ }
+ }
+ return className;
+ }
+
/**
* Parse a signed integer of size bytes long.
=====
2018-03-06 18:42 GMT+03:00 Kevin Looney <kevin.looney at oracle.com>:
> Hello Maxim,
>
> Thanks for identifying the issue in asmtools.
>
>> The following patch address quoted class names handling bug in `asmtools
>> jasm`.
>
> Did you forget to attach the patch? - or are you simply reporting a problem
> without a fix?
>
> Thanks in advance, Regards,
> Kevin L
> Manager - Conformance tools
>
>
>
> On 3/3/18 9:22 PM, Maxim Degtyarev wrote:
>>
>> The following patch address quoted class names handling bug in `asmtools
>> jasm`.
>>
>> Quick example: Following code will produce class `TestQuoted` in
>> top-level package ignoring package, specified by the "package"
>> statement.
>> After removing quotes around class name resulting class file will
>> contain class `pkg.TestQuoted` as expected.
>>
>>
>> package pkg;
>>
>> super public class "TestQuoted"
>> version 52:0
>> {
>>
>>
>> public Method "<init>":"()V"
>> stack 1 locals 1
>> {
>> aload_0;
>> invokespecial Method java/lang/Object."<init>":"()V";
>> return;
>> }
>>
>> } // end Class TestQuoted
>
>
>
> --
> kevin.looney at oracle.com
>
More information about the code-tools-dev
mailing list