From 40f9ef2f5602e8fbcdc04dc1b32003538b00ef4e Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Thu, 12 Jul 2018 11:04:29 -0700 Subject: Check the message to be encoded is the wrong type. (#4885) --- ruby/ext/google/protobuf_c/encode_decode.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'ruby/ext/google/protobuf_c/encode_decode.c') diff --git a/ruby/ext/google/protobuf_c/encode_decode.c b/ruby/ext/google/protobuf_c/encode_decode.c index 8c6ded64..c7a7aa1a 100644 --- a/ruby/ext/google/protobuf_c/encode_decode.c +++ b/ruby/ext/google/protobuf_c/encode_decode.c @@ -1108,6 +1108,13 @@ static void putmsg(VALUE msg_rb, const Descriptor* desc, TypedData_Get_Struct(msg_rb, MessageHeader, &Message_type, msg); + if (desc != msg->descriptor) { + rb_raise(cTypeError, + "The type of given msg is '%s', expect '%s'.", + upb_msgdef_fullname(msg->descriptor->msgdef), + upb_msgdef_fullname(desc->msgdef)); + } + for (upb_msg_field_begin(&i, desc->msgdef); !upb_msg_field_done(&i); upb_msg_field_next(&i)) { -- cgit v1.2.3