From e4fa369b29a95200ccf331c247eaa8a106fe502a Mon Sep 17 00:00:00 2001 From: icodening Date: Wed, 12 Jun 2024 09:57:13 +0800 Subject: [PATCH] add serialization check (#14312) --- .../tri/h12/grpc/WrapperHttpMessageCodec.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/h12/grpc/WrapperHttpMessageCodec.java b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/h12/grpc/WrapperHttpMessageCodec.java index 9082b442b5..f7993c1ba8 100644 --- a/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/h12/grpc/WrapperHttpMessageCodec.java +++ b/dubbo-rpc/dubbo-rpc-triple/src/main/java/org/apache/dubbo/rpc/protocol/tri/h12/grpc/WrapperHttpMessageCodec.java @@ -24,7 +24,9 @@ import org.apache.dubbo.remoting.http12.exception.DecodeException; import org.apache.dubbo.remoting.http12.exception.EncodeException; import org.apache.dubbo.remoting.http12.message.HttpMessageCodec; import org.apache.dubbo.remoting.http12.message.MediaType; +import org.apache.dubbo.remoting.transport.CodecSupport; import org.apache.dubbo.rpc.model.FrameworkModel; +import org.apache.dubbo.rpc.protocol.tri.TripleConstant; import org.apache.dubbo.rpc.protocol.tri.TripleCustomerProtocolWapper; import java.io.ByteArrayInputStream; @@ -112,6 +114,8 @@ public class WrapperHttpMessageCodec implements HttpMessageCodec { } TripleCustomerProtocolWapper.TripleRequestWrapper wrapper = TripleCustomerProtocolWapper.TripleRequestWrapper.parseFrom(bos.toByteArray()); + final String serializeType = convertHessianFromWrapper(wrapper.getSerializeType()); + CodecSupport.checkSerialization(serializeType, url); setSerializeType(wrapper.getSerializeType()); Object[] ret = new Object[wrapper.getArgs().size()]; for (int i = 0; i < wrapper.getArgs().size(); i++) { @@ -140,4 +144,11 @@ public class WrapperHttpMessageCodec implements HttpMessageCodec { outputStream.write(((length >> 8) & 0xFF)); outputStream.write((length & 0xFF)); } + + private static String convertHessianFromWrapper(String serializeType) { + if (TripleConstant.HESSIAN4.equals(serializeType)) { + return TripleConstant.HESSIAN2; + } + return serializeType; + } }