sofa-pbrpc
sofa-pbrpc copied to clipboard
Fix a null pointer dereference bug in function parse_msg
In function field2json, if repeated = false, the NULL value of json is returned to the caller.
static rapidjson::Value* field2json(const Message *msg, const FieldDescriptor *field,
rapidjson::Value::AllocatorType& allocator)
{
...
rapidjson::Value* json = NULL;
if (repeated)
{
json = new rapidjson::Value(rapidjson::kArrayType);
}
...
return json;
}
In caller function parse_msg, the return value of function field2json is dereferenced without any null value check, causing a null pointer dereference bug.
rapidjson::Value* field_json = field2json(msg, field, allocator);
root->AddMember(name, *field_json, allocator);