You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by lk...@apache.org on 2022/12/22 19:56:27 UTC
[netbeans] branch master updated: Prevent AOBE on empty bad class files.
This is an automated email from the ASF dual-hosted git repository.
lkishalmi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push:
new 30a8cefa5a Prevent AOBE on empty bad class files.
30a8cefa5a is described below
commit 30a8cefa5a73f258b61939729e845672e66826fe
Author: Laszlo Kishalmi <la...@gmail.com>
AuthorDate: Thu Dec 22 10:33:17 2022 -0800
Prevent AOBE on empty bad class files.
---
.../lib/nbjavac/services/NBClassReader.java | 34 ++++++++++++----------
1 file changed, 18 insertions(+), 16 deletions(-)
diff --git a/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBClassReader.java b/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBClassReader.java
index d1ca38a3c1..9bad23cc29 100644
--- a/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBClassReader.java
+++ b/java/lib.nbjavac/src/org/netbeans/lib/nbjavac/services/NBClassReader.java
@@ -88,23 +88,25 @@ public class NBClassReader extends ClassReader {
JavaFileObject origFile = c.classfile;
try (InputStream in = origFile.openInputStream()) {
byte[] data = readFile(in);
- int major = (Byte.toUnsignedInt(data[6]) << 8) + Byte.toUnsignedInt(data[7]);
- int maxMajor = ClassFile.Version.MAX().major;
- if (maxMajor < major) {
- if (log.currentSourceFile() != null) {
- log.warning(0, Warnings.BigMajorVersion(origFile, major, maxMajor));
- }
- data[6] = (byte) (maxMajor >> 8);
- data[7] = (byte) (maxMajor & 0xFF);
- byte[] dataFin = data;
- c.classfile = new ForwardingJavaFileObject(origFile) {
- @Override
- public InputStream openInputStream() throws IOException {
- return new ByteArrayInputStream(dataFin);
+ if (data.length > 8) {
+ int major = (Byte.toUnsignedInt(data[6]) << 8) + Byte.toUnsignedInt(data[7]);
+ int maxMajor = ClassFile.Version.MAX().major;
+ if (maxMajor < major) {
+ if (log.currentSourceFile() != null) {
+ log.warning(0, Warnings.BigMajorVersion(origFile, major, maxMajor));
}
- };
- super.readClassFile(c);
- return ;
+ data[6] = (byte) (maxMajor >> 8);
+ data[7] = (byte) (maxMajor & 0xFF);
+ byte[] dataFin = data;
+ c.classfile = new ForwardingJavaFileObject(origFile) {
+ @Override
+ public InputStream openInputStream() throws IOException {
+ return new ByteArrayInputStream(dataFin);
+ }
+ };
+ super.readClassFile(c);
+ return ;
+ }
}
} catch (IOException ex) {
Logger.getLogger(NBClassReader.class.getName()).log(Level.FINE, null, ex);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists