From eac72b8967983ba0e5d7ed71fa3f5a80ebeecb0e Mon Sep 17 00:00:00 2001 From: Stephan Zeisberg Date: Mon, 14 Mar 2016 15:24:15 +0100 Subject: [PATCH] Add NULL check to deserializer functions --- src/rpc/msgpack/message.c | 12 ++++++------ test/unit/message-serialize-request.c | 3 +++ test/unit/message-serialize-response.c | 5 ++++- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/rpc/msgpack/message.c b/src/rpc/msgpack/message.c index 0676edd..1917680 100644 --- a/src/rpc/msgpack/message.c +++ b/src/rpc/msgpack/message.c @@ -103,11 +103,11 @@ int message_serialize_error_response(msgpack_packer *pk, int message_serialize_response(struct message_response *res, msgpack_packer *pk) { - msgpack_pack_array(pk, 4); - - if (pack_uint8(pk, MESSAGE_TYPE_RESPONSE) == -1) + if (!pk || !res) return (-1); + msgpack_pack_array(pk, 4); + pack_uint8(pk, MESSAGE_TYPE_RESPONSE); pack_uint32(pk, res->msgid); pack_nil(pk); @@ -121,11 +121,11 @@ int message_serialize_response(struct message_response *res, int message_serialize_request(struct message_request *req, msgpack_packer *pk) { - msgpack_pack_array(pk, 4); - - if (pack_uint8(pk, MESSAGE_TYPE_REQUEST) == -1) + if (!pk || !req) return (-1); + msgpack_pack_array(pk, 4); + pack_uint8(pk, MESSAGE_TYPE_REQUEST); pack_uint32(pk, req->msgid); if (req->method.str == NULL || (pack_string(pk, req->method) == -1)) diff --git a/test/unit/message-serialize-request.c b/test/unit/message-serialize-request.c index db4f9b3..371e32a 100644 --- a/test/unit/message-serialize-request.c +++ b/test/unit/message-serialize-request.c @@ -70,5 +70,8 @@ void unit_message_serialize_request(UNUSED(void **state)) free_params(request.params); + /* null check */ + assert_int_not_equal(0, message_serialize_request(NULL, NULL)); + msgpack_sbuffer_destroy(&sbuf); } diff --git a/test/unit/message-serialize-response.c b/test/unit/message-serialize-response.c index 95ec9b4..8809e86 100644 --- a/test/unit/message-serialize-response.c +++ b/test/unit/message-serialize-response.c @@ -55,8 +55,11 @@ void unit_message_serialize_response(UNUSED(void **state)) response.params = params; assert_int_not_equal(0, message_serialize_response(&response, &pk)); msgpack_sbuffer_clear(&sbuf); - + free_params(response.params); + /* null check */ + assert_int_not_equal(0, message_serialize_response(NULL, NULL)); + msgpack_sbuffer_destroy(&sbuf); }