Browse Source

Upgrade to ASM 9.9 plus lenient version check patch

Closes gh-35763
pull/35814/head
Juergen Hoeller 2 months ago
parent
commit
b5008d33ee
  1. 12
      spring-core/src/main/java/org/springframework/asm/ClassReader.java
  2. 1
      spring-core/src/main/java/org/springframework/asm/Opcodes.java
  3. 2
      spring-core/src/main/java/org/springframework/asm/SymbolTable.java

12
spring-core/src/main/java/org/springframework/asm/ClassReader.java

@ -193,12 +193,16 @@ public class ClassReader { @@ -193,12 +193,16 @@ public class ClassReader {
final byte[] classFileBuffer, final int classFileOffset, final boolean checkClassVersion) {
this.classFileBuffer = classFileBuffer;
this.b = classFileBuffer;
// Check the class' major_version. This field is after the magic and minor_version fields, which
// use 4 and 2 bytes respectively.
if (checkClassVersion && readShort(classFileOffset + 6) > Opcodes.V25) {
throw new IllegalArgumentException(
"Unsupported class file major version " + readShort(classFileOffset + 6));
}
// SPRING PATCH: leniently try to parse newer class files as well
// if (checkClassVersion && readShort(classFileOffset + 6) > Opcodes.V26) {
// throw new IllegalArgumentException(
// "Unsupported class file major version " + readShort(classFileOffset + 6));
// }
// END OF PATCH
// Create the constant pool arrays. The constant_pool_count field is after the magic,
// minor_version and major_version fields, which use 4, 2 and 2 bytes respectively.
int constantPoolCount = readUnsignedShort(classFileOffset + 8);

1
spring-core/src/main/java/org/springframework/asm/Opcodes.java

@ -290,6 +290,7 @@ public interface Opcodes { @@ -290,6 +290,7 @@ public interface Opcodes {
int V23 = 0 << 16 | 67;
int V24 = 0 << 16 | 68;
int V25 = 0 << 16 | 69;
int V26 = 0 << 16 | 70;
/**
* Version flag indicating that the class is using 'preview' features.

2
spring-core/src/main/java/org/springframework/asm/SymbolTable.java

@ -1473,7 +1473,7 @@ final class SymbolTable { @@ -1473,7 +1473,7 @@ final class SymbolTable {
/**
* Another entry (and so on recursively) having the same hash code (modulo the size of {@link
* SymbolTable#labelEntries}}) as this one.
* SymbolTable#labelEntries}) as this one.
*/
LabelEntry next;

Loading…
Cancel
Save