src/java.base/share/classes/java/io/ObjectInputStream.java
changeset 50271 697b49a04e19
parent 49438 879cf9f18688
child 52427 3c6aa484536c
--- a/src/java.base/share/classes/java/io/ObjectInputStream.java	Wed May 23 15:57:51 2018 +0000
+++ b/src/java.base/share/classes/java/io/ObjectInputStream.java	Fri May 25 13:29:25 2018 -0400
@@ -1263,9 +1263,11 @@
         if (serialFilter != null) {
             RuntimeException ex = null;
             ObjectInputFilter.Status status;
+            // Info about the stream is not available if overridden by subclass, return 0
+            long bytesRead = (bin == null) ? 0 : bin.getBytesRead();
             try {
                 status = serialFilter.checkInput(new FilterValues(clazz, arrayLength,
-                        totalObjectRefs, depth, bin.getBytesRead()));
+                        totalObjectRefs, depth, bytesRead));
             } catch (RuntimeException e) {
                 // Preventive interception of an exception to log
                 status = ObjectInputFilter.Status.REJECTED;
@@ -1277,7 +1279,7 @@
                                 ? Logger.Level.DEBUG
                                 : Logger.Level.TRACE,
                         "ObjectInputFilter {0}: {1}, array length: {2}, nRefs: {3}, depth: {4}, bytes: {5}, ex: {6}",
-                        status, clazz, arrayLength, totalObjectRefs, depth, bin.getBytesRead(),
+                        status, clazz, arrayLength, totalObjectRefs, depth, bytesRead,
                         Objects.toString(ex, "n/a"));
             }
             if (status == null ||