JDK-6855180 : Fix classfile version check in java_crw_demo
  • Type: Bug
  • Component: core-svc
  • Sub-Component: tools
  • Affected Version: 7
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2009-06-26
  • Updated: 2012-11-20
  • Resolved: 2011-04-19
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 7 Other
7 b64Fixed OpenJDK6Fixed
Related Reports
Relates :  
Relates :  
Description
Problem with jdk/src/share/demo/jvmti/java_crw_demo/java_crw_demo.c:
     CRW_ASSERT(ci, classfileVersion <= 50); /* Mustang class files or less */

Should add to

 ./jdk/src/share/javavm/export/classfile_constants.h

Something like:
    #define JAVA_MAX_SUPPORTED_VERSION 51

Changing above from
   CRW_ASSERT(ci, classfileVersion <= 50);
to
  CRW_ASSERT(ci, classfileVersion <= JAVA_MAX_SUPPORTED_VERSION);

Comments
EVALUATION http://hg.openjdk.java.net/jdk6/jdk6/jdk/rev/13fbbc4df814
08-12-2009

EVALUATION http://hg.openjdk.java.net/jdk7/tl/jdk/rev/dd20c662d463
28-06-2009

EVALUATION diff --git a/src/share/demo/jvmti/java_crw_demo/java_crw_demo.c b/src/share/demo/jvmti/java_crw_demo/java_crw_demo.c --- a/src/share/demo/jvmti/java_crw_demo/java_crw_demo.c +++ b/src/share/demo/jvmti/java_crw_demo/java_crw_demo.c @@ -2227,7 +2227,8 @@ inject_class(struct CrwClassImage *ci, CrwCpoolIndex this_class; CrwCpoolIndex super_class; unsigned magic; - unsigned classfileVersion; + unsigned classfileMajorVersion; + unsigned classfileMinorVersion; unsigned interface_count; CRW_ASSERT_CI(ci); @@ -2258,10 +2259,12 @@ inject_class(struct CrwClassImage *ci, } /* minor version number not used */ - (void)copyU2(ci); + classfileMinorVersion = copyU2(ci); /* major version number not used */ - classfileVersion = copyU2(ci); - CRW_ASSERT(ci, classfileVersion <= 50); /* Mustang class files or less */ + classfileMajorVersion = copyU2(ci); + CRW_ASSERT(ci, (classfileMajorVersion <= JVM_CLASSFILE_MAJOR_VERSION) || + ((classfileMajorVersion == JVM_CLASSFILE_MAJOR_VERSION) && + (classfileMinorVersion <= JVM_CLASSFILE_MINOR_VERSION))); cpool_setup(ci); diff --git a/src/share/javavm/export/classfile_constants.h b/src/share/javavm/export/classfile_constants.h --- a/src/share/javavm/export/classfile_constants.h +++ b/src/share/javavm/export/classfile_constants.h @@ -29,6 +29,10 @@ #ifdef __cplusplus extern "C" { #endif + +/* Classfile version number for this information */ +#define JVM_CLASSFILE_MAJOR_VERSION 51 +#define JVM_CLASSFILE_MINOR_VERSION 0 /* Flags */
27-06-2009