add serialization check (#14312)

This commit is contained in:
icodening 2024-06-12 09:57:13 +08:00 committed by GitHub
parent 5d5d0365b5
commit e4fa369b29
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 11 additions and 0 deletions

View File

@ -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;
}
}