This is an automated email from the ASF dual-hosted git repository.

albumenj pushed a commit to branch 3.1
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.1 by this push:
     new 0ad7e4041e Fix hessian2 serializable check (#11573)
0ad7e4041e is described below

commit 0ad7e4041edcbfaed1ab9e38c2bc36457dab3d87
Author: Albumen Kevin <[email protected]>
AuthorDate: Wed Feb 15 13:35:35 2023 +0800

    Fix hessian2 serializable check (#11573)
---
 .../hessian2/Hessian2SerializerFactory.java        | 24 ++++++++++++++++------
 1 file changed, 18 insertions(+), 6 deletions(-)

diff --git 
a/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/Hessian2SerializerFactory.java
 
b/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/Hessian2SerializerFactory.java
index 8b26cbf411..099c5e9766 100644
--- 
a/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/Hessian2SerializerFactory.java
+++ 
b/dubbo-serialization/dubbo-serialization-hessian2/src/main/java/org/apache/dubbo/common/serialize/hessian2/Hessian2SerializerFactory.java
@@ -16,8 +16,6 @@
  */
 package org.apache.dubbo.common.serialize.hessian2;
 
-import java.io.Serializable;
-
 import org.apache.dubbo.common.utils.DefaultSerializeClassChecker;
 
 import com.alibaba.com.caucho.hessian.io.Deserializer;
@@ -26,6 +24,8 @@ import com.alibaba.com.caucho.hessian.io.JavaSerializer;
 import com.alibaba.com.caucho.hessian.io.Serializer;
 import com.alibaba.com.caucho.hessian.io.SerializerFactory;
 
+import java.io.Serializable;
+
 public class Hessian2SerializerFactory extends SerializerFactory {
 
     private final DefaultSerializeClassChecker defaultSerializeClassChecker;
@@ -44,9 +44,15 @@ public class Hessian2SerializerFactory extends 
SerializerFactory {
         if (_defaultSerializer != null)
             return _defaultSerializer;
 
+        try {
+            // pre-check if class is allow
+            defaultSerializeClassChecker.loadClass(getClassLoader(), 
cl.getName());
+        } catch (ClassNotFoundException e) {
+            // ignore
+        }
+
         if (!Serializable.class.isAssignableFrom(cl)
-            && !isAllowNonSerializable()
-            && !defaultSerializeClassChecker.isCheckSerializable()) {
+            && (!isAllowNonSerializable() || 
!defaultSerializeClassChecker.isCheckSerializable())) {
             throw new IllegalStateException("Serialized class " + cl.getName() 
+ " must implement java.io.Serializable");
         }
 
@@ -55,9 +61,15 @@ public class Hessian2SerializerFactory extends 
SerializerFactory {
 
     @Override
     protected Deserializer getDefaultDeserializer(Class cl) {
+        try {
+            // pre-check if class is allow
+            defaultSerializeClassChecker.loadClass(getClassLoader(), 
cl.getName());
+        } catch (ClassNotFoundException e) {
+            // ignore
+        }
+
         if (!Serializable.class.isAssignableFrom(cl)
-            && !isAllowNonSerializable()
-            && !defaultSerializeClassChecker.isCheckSerializable()) {
+            && (!isAllowNonSerializable() || 
!defaultSerializeClassChecker.isCheckSerializable())) {
             throw new IllegalStateException("Serialized class " + cl.getName() 
+ " must implement java.io.Serializable");
         }
 

Reply via email to