Projects
openEuler:24.03:SP1:Everything
openjdk-1.8.0
_service:tar_scm:The-fast-serialization-functio...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm:The-fast-serialization-function-of-sun.rmi.transport.patch of Package openjdk-1.8.0
Subject: [PATCH][Huawei] The fast serialization function of sun.rmi.transport.ConnectionOutputStream is disabled by default --- .../classes/java/io/ObjectOutputStream.java | 23 ++++++++++++++++--- .../sun/rmi/server/MarshalOutputStream.java | 10 ++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/jdk/src/share/classes/java/io/ObjectOutputStream.java b/jdk/src/share/classes/java/io/ObjectOutputStream.java index 328f47589..78dc3c5b2 100644 --- a/jdk/src/share/classes/java/io/ObjectOutputStream.java +++ b/jdk/src/share/classes/java/io/ObjectOutputStream.java @@ -240,7 +240,7 @@ public class ObjectOutputStream * Value of "UseFastSerializer" property. The fastSerializer is turned * on when it is true. */ - private final boolean useFastSerializer = UNSAFE.getUseFastSerializer(); + private boolean useFastSerializer = UNSAFE.getUseFastSerializer(); /** * value of "printFastSerializer" property, @@ -254,7 +254,22 @@ public class ObjectOutputStream * Magic number that is written to the stream header when using fastserilizer. */ private static final short STREAM_MAGIC_FAST = (short)0xdeca; + + /** + * The default value is true. If you want to disable the fast serialization function, please set it to false. + */ + protected boolean enableFastSerializerClass(){ + return true; + } + /** + * Disable fast serialization functionality. + */ + private void disableFastSerializerStatusByClass() { + if ( this.useFastSerializer && !enableFastSerializerClass()){ + this.useFastSerializer = false; + } + } /** * Creates an ObjectOutputStream that writes to the specified OutputStream. * This constructor writes the serialization stream header to the @@ -279,7 +294,8 @@ public class ObjectOutputStream * @see ObjectInputStream#ObjectInputStream(InputStream) */ public ObjectOutputStream(OutputStream out) throws IOException { - verifySubclass(); + disableFastSerializerStatusByClass(); + verifySubclass(); bout = new BlockDataOutputStream(out); handles = new HandleTable(10, (float) 3.00); subs = new ReplaceTable(10, (float) 3.00); @@ -311,7 +327,8 @@ public class ObjectOutputStream * @see java.io.SerializablePermission */ protected ObjectOutputStream() throws IOException, SecurityException { - SecurityManager sm = System.getSecurityManager(); + disableFastSerializerStatusByClass(); + SecurityManager sm = System.getSecurityManager(); if (sm != null) { sm.checkPermission(SUBCLASS_IMPLEMENTATION_PERMISSION); } diff --git a/jdk/src/share/classes/sun/rmi/server/MarshalOutputStream.java b/jdk/src/share/classes/sun/rmi/server/MarshalOutputStream.java index 699f11072..e113441f8 100644 --- a/jdk/src/share/classes/sun/rmi/server/MarshalOutputStream.java +++ b/jdk/src/share/classes/sun/rmi/server/MarshalOutputStream.java @@ -48,6 +48,16 @@ import sun.rmi.transport.Target; */ public class MarshalOutputStream extends ObjectOutputStream { + /** + * value of "enableRMIFastSerializerClass" property + */ + private static final boolean enableRMIFastSerializerClass = java.security.AccessController.doPrivileged( new sun.security.action.GetBooleanAction( "enableRMIFastSerializerClass")).booleanValue(); + + @Override + protected boolean enableFastSerializerClass() { + return this.enableRMIFastSerializerClass; + } + /** * Creates a marshal output stream with protocol version 1. */ -- 2.44.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2