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