Skip to content

Commit b9e66b2

Browse files
committed
[Java] Skip toString in annotation invocation handler readObject (#922)
* Use fury serialization to avoid AnnotationInvocationHandler#readObject * Use fury serialization to avoid AnnotationInvocationHandler#readObject
1 parent ed78c77 commit b9e66b2

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

java/fury-core/src/main/java/io/fury/resolver/ClassResolver.java

+7
Original file line numberDiff line numberDiff line change
@@ -541,6 +541,13 @@ public static boolean requireJavaSerialization(Class<?> clz) {
541541
if (Externalizable.class.isAssignableFrom(clz)) {
542542
return false;
543543
} else {
544+
// `AnnotationInvocationHandler#readObject` may invoke `toString` of object, which may be
545+
// risky.
546+
// For example, JsonObject#toString may invoke `getter`.
547+
// Use fury serialization to avoid this.
548+
if ("sun.reflect.annotation.AnnotationInvocationHandler".equals(clz.getName())) {
549+
return false;
550+
}
544551
return JavaSerializer.getReadObjectMethod(clz) != null
545552
|| JavaSerializer.getWriteObjectMethod(clz) != null;
546553
}

0 commit comments

Comments
 (0)