From 2fcf246f076813558bb32034ac337344d61b99f5 Mon Sep 17 00:00:00 2001 From: "Roger A. Light" Date: Wed, 3 Apr 2019 16:14:15 +0100 Subject: [PATCH] Fix potential crashes on memory alloc failure in tests only. --- test/unit/datatype_read.c | 6 +- test/unit/property_read.c | 641 ++++++++++++++++++++------------- test/unit/property_user_read.c | 84 ++++- test/unit/property_write.c | 33 ++ 4 files changed, 487 insertions(+), 277 deletions(-) diff --git a/test/unit/datatype_read.c b/test/unit/datatype_read.c index f0234bf4..6001cbe3 100644 --- a/test/unit/datatype_read.c +++ b/test/unit/datatype_read.c @@ -128,9 +128,11 @@ static void string_read_helper( rc = packet__read_string(&packet, (char **)&value, &length); CU_ASSERT_EQUAL(rc, rc_expected); if(value_expected){ - CU_ASSERT_NSTRING_EQUAL(value, value_expected, length_expected); + if(value){ + CU_ASSERT_NSTRING_EQUAL(value, value_expected, length_expected); + } }else{ - CU_ASSERT_EQUAL(value, NULL); + CU_ASSERT_PTR_NULL(value); } CU_ASSERT_EQUAL(length, length_expected); free(value); diff --git a/test/unit/property_read.c b/test/unit/property_read.c index 5982ae32..e305bf3c 100644 --- a/test/unit/property_read.c +++ b/test/unit/property_read.c @@ -359,13 +359,15 @@ static void packet_helper_reason_string_user_property(int command) CU_ASSERT_EQUAL(p->value.s.len, strlen("reason")); p = p->next; - CU_ASSERT_PTR_NULL(p->next); - - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_USER_PROPERTY); - CU_ASSERT_STRING_EQUAL(p->value.s.v, "value"); - CU_ASSERT_EQUAL(p->value.s.len, strlen("value")); - CU_ASSERT_STRING_EQUAL(p->name.v, "name"); - CU_ASSERT_EQUAL(p->name.len, strlen("name")); + if(p){ + CU_ASSERT_PTR_NULL(p->next); + + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_USER_PROPERTY); + CU_ASSERT_STRING_EQUAL(p->value.s.v, "value"); + CU_ASSERT_EQUAL(p->value.s.len, strlen("value")); + CU_ASSERT_STRING_EQUAL(p->name.v, "name"); + CU_ASSERT_EQUAL(p->name.len, strlen("name")); + } mosquitto_property_free_all(&properties); } @@ -1220,58 +1222,83 @@ static void TEST_packet_connect(void) rc = property__read_all(CMD_CONNECT, &packet, &properties); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); - CU_ASSERT_PTR_NOT_NULL(properties->next); p = properties; + CU_ASSERT_PTR_NOT_NULL(properties); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_SESSION_EXPIRY_INTERVAL); + CU_ASSERT_EQUAL(p->value.i32, 0x12450000); - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_SESSION_EXPIRY_INTERVAL); - CU_ASSERT_EQUAL(p->value.i32, 0x12450000); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_RECEIVE_MAXIMUM); - CU_ASSERT_EQUAL(p->value.i16, 0x0005); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_MAXIMUM_PACKET_SIZE); - CU_ASSERT_EQUAL(p->value.i32, 0x12450000); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_TOPIC_ALIAS_MAXIMUM); - CU_ASSERT_EQUAL(p->value.i16, 0x0002); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_REQUEST_PROBLEM_INFORMATION); - CU_ASSERT_EQUAL(p->value.i8, 1); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_REQUEST_RESPONSE_INFORMATION); - CU_ASSERT_EQUAL(p->value.i8, 1); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_USER_PROPERTY); - CU_ASSERT_STRING_EQUAL(p->value.s.v, "value"); - CU_ASSERT_EQUAL(p->value.s.len, strlen("value")); - CU_ASSERT_STRING_EQUAL(p->name.v, "name"); - CU_ASSERT_EQUAL(p->name.len, strlen("name")); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_AUTHENTICATION_METHOD); - CU_ASSERT_STRING_EQUAL(p->value.s.v, "none"); - CU_ASSERT_EQUAL(p->value.s.len, strlen("none")); - - p = p->next; - CU_ASSERT_PTR_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_AUTHENTICATION_DATA); - CU_ASSERT_EQUAL(p->value.bin.v[0], 1); - CU_ASSERT_EQUAL(p->value.bin.v[1], 2); - CU_ASSERT_EQUAL(p->value.s.len, 2); + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_RECEIVE_MAXIMUM); + CU_ASSERT_EQUAL(p->value.i16, 0x0005); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_MAXIMUM_PACKET_SIZE); + CU_ASSERT_EQUAL(p->value.i32, 0x12450000); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_TOPIC_ALIAS_MAXIMUM); + CU_ASSERT_EQUAL(p->value.i16, 0x0002); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_REQUEST_PROBLEM_INFORMATION); + CU_ASSERT_EQUAL(p->value.i8, 1); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_REQUEST_RESPONSE_INFORMATION); + CU_ASSERT_EQUAL(p->value.i8, 1); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_USER_PROPERTY); + CU_ASSERT_STRING_EQUAL(p->value.s.v, "value"); + CU_ASSERT_EQUAL(p->value.s.len, strlen("value")); + CU_ASSERT_STRING_EQUAL(p->name.v, "name"); + CU_ASSERT_EQUAL(p->name.len, strlen("name")); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_AUTHENTICATION_METHOD); + CU_ASSERT_STRING_EQUAL(p->value.s.v, "none"); + CU_ASSERT_EQUAL(p->value.s.len, strlen("none")); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_AUTHENTICATION_DATA); + CU_ASSERT_EQUAL(p->value.bin.v[0], 1); + CU_ASSERT_EQUAL(p->value.bin.v[1], 2); + CU_ASSERT_EQUAL(p->value.s.len, 2); + } + } + } + } + } + } + } + } + } mosquitto_property_free_all(&properties); } @@ -1309,102 +1336,152 @@ static void TEST_packet_connack(void) rc = property__read_all(CMD_CONNACK, &packet, &properties); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); - CU_ASSERT_PTR_NOT_NULL(properties->next); + CU_ASSERT_PTR_NOT_NULL(properties); p = properties; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_SESSION_EXPIRY_INTERVAL); - CU_ASSERT_EQUAL(p->value.i32, 0x12450000); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_RECEIVE_MAXIMUM); - CU_ASSERT_EQUAL(p->value.i16, 0x0005); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_MAXIMUM_QOS); - CU_ASSERT_EQUAL(p->value.i8, 1); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_RETAIN_AVAILABLE); - CU_ASSERT_EQUAL(p->value.i8, 0); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_MAXIMUM_PACKET_SIZE); - CU_ASSERT_EQUAL(p->value.i32, 0x12450000); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_ASSIGNED_CLIENT_IDENTIFIER); - CU_ASSERT_STRING_EQUAL(p->value.s.v, "ab"); - CU_ASSERT_EQUAL(p->value.s.len, strlen("ab")); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_TOPIC_ALIAS_MAXIMUM); - CU_ASSERT_EQUAL(p->value.i16, 0x0002); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_REASON_STRING); - CU_ASSERT_STRING_EQUAL(p->value.s.v, "reason"); - CU_ASSERT_EQUAL(p->value.s.len, strlen("reason")); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_USER_PROPERTY); - CU_ASSERT_STRING_EQUAL(p->value.s.v, "value"); - CU_ASSERT_EQUAL(p->value.s.len, strlen("value")); - CU_ASSERT_STRING_EQUAL(p->name.v, "name"); - CU_ASSERT_EQUAL(p->name.len, strlen("name")); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_WILDCARD_SUB_AVAILABLE); - CU_ASSERT_EQUAL(p->value.i8, 0); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_SUBSCRIPTION_ID_AVAILABLE); - CU_ASSERT_EQUAL(p->value.i8, 0); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_SHARED_SUB_AVAILABLE); - CU_ASSERT_EQUAL(p->value.i8, 0); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_SERVER_KEEP_ALIVE); - CU_ASSERT_EQUAL(p->value.i16, 0x00FF); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_RESPONSE_INFORMATION); - CU_ASSERT_STRING_EQUAL(p->value.s.v, "rsp"); - CU_ASSERT_EQUAL(p->value.s.len, strlen("rsp")); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_SERVER_REFERENCE); - CU_ASSERT_STRING_EQUAL(p->value.s.v, "serv"); - CU_ASSERT_EQUAL(p->value.s.len, strlen("serv")); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_AUTHENTICATION_METHOD); - CU_ASSERT_STRING_EQUAL(p->value.s.v, "none"); - CU_ASSERT_EQUAL(p->value.s.len, strlen("none")); - - p = p->next; - CU_ASSERT_PTR_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_AUTHENTICATION_DATA); - CU_ASSERT_EQUAL(p->value.bin.v[0], 1); - CU_ASSERT_EQUAL(p->value.bin.v[1], 2); - CU_ASSERT_EQUAL(p->value.s.len, 2); + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_SESSION_EXPIRY_INTERVAL); + CU_ASSERT_EQUAL(p->value.i32, 0x12450000); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_RECEIVE_MAXIMUM); + CU_ASSERT_EQUAL(p->value.i16, 0x0005); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_MAXIMUM_QOS); + CU_ASSERT_EQUAL(p->value.i8, 1); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_RETAIN_AVAILABLE); + CU_ASSERT_EQUAL(p->value.i8, 0); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_MAXIMUM_PACKET_SIZE); + CU_ASSERT_EQUAL(p->value.i32, 0x12450000); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_ASSIGNED_CLIENT_IDENTIFIER); + CU_ASSERT_STRING_EQUAL(p->value.s.v, "ab"); + CU_ASSERT_EQUAL(p->value.s.len, strlen("ab")); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_TOPIC_ALIAS_MAXIMUM); + CU_ASSERT_EQUAL(p->value.i16, 0x0002); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_REASON_STRING); + CU_ASSERT_STRING_EQUAL(p->value.s.v, "reason"); + CU_ASSERT_EQUAL(p->value.s.len, strlen("reason")); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_USER_PROPERTY); + CU_ASSERT_STRING_EQUAL(p->value.s.v, "value"); + CU_ASSERT_EQUAL(p->value.s.len, strlen("value")); + CU_ASSERT_STRING_EQUAL(p->name.v, "name"); + CU_ASSERT_EQUAL(p->name.len, strlen("name")); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_WILDCARD_SUB_AVAILABLE); + CU_ASSERT_EQUAL(p->value.i8, 0); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_SUBSCRIPTION_ID_AVAILABLE); + CU_ASSERT_EQUAL(p->value.i8, 0); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_SHARED_SUB_AVAILABLE); + CU_ASSERT_EQUAL(p->value.i8, 0); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_SERVER_KEEP_ALIVE); + CU_ASSERT_EQUAL(p->value.i16, 0x00FF); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_RESPONSE_INFORMATION); + CU_ASSERT_STRING_EQUAL(p->value.s.v, "rsp"); + CU_ASSERT_EQUAL(p->value.s.len, strlen("rsp")); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_SERVER_REFERENCE); + CU_ASSERT_STRING_EQUAL(p->value.s.v, "serv"); + CU_ASSERT_EQUAL(p->value.s.len, strlen("serv")); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_AUTHENTICATION_METHOD); + CU_ASSERT_STRING_EQUAL(p->value.s.v, "none"); + CU_ASSERT_EQUAL(p->value.s.len, strlen("none")); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_AUTHENTICATION_DATA); + CU_ASSERT_EQUAL(p->value.bin.v[0], 1); + CU_ASSERT_EQUAL(p->value.bin.v[1], 2); + CU_ASSERT_EQUAL(p->value.s.len, 2); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } mosquitto_property_free_all(&properties); } @@ -1433,54 +1510,77 @@ static void TEST_packet_publish(void) rc = property__read_all(CMD_PUBLISH, &packet, &properties); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); - CU_ASSERT_PTR_NOT_NULL(properties->next); p = properties; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_PAYLOAD_FORMAT_INDICATOR); - CU_ASSERT_EQUAL(p->value.i8, 1); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_MESSAGE_EXPIRY_INTERVAL); - CU_ASSERT_EQUAL(p->value.i32, 0x12450000); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_TOPIC_ALIAS); - CU_ASSERT_EQUAL(p->value.i16, 0x0002); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_RESPONSE_TOPIC); - CU_ASSERT_STRING_EQUAL(p->value.s.v, "respon"); - CU_ASSERT_EQUAL(p->value.s.len, strlen("respon")); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_CORRELATION_DATA); - CU_ASSERT_EQUAL(p->value.bin.v[0], 1); - CU_ASSERT_EQUAL(p->value.bin.v[1], 2); - CU_ASSERT_EQUAL(p->value.bin.len, 2); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_USER_PROPERTY); - CU_ASSERT_STRING_EQUAL(p->value.s.v, "value"); - CU_ASSERT_EQUAL(p->value.s.len, strlen("value")); - CU_ASSERT_STRING_EQUAL(p->name.v, "name"); - CU_ASSERT_EQUAL(p->name.len, strlen("name")); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_SUBSCRIPTION_IDENTIFIER); - CU_ASSERT_EQUAL(p->value.varint, 0x00000004); - - p = p->next; - CU_ASSERT_PTR_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_CONTENT_TYPE); - CU_ASSERT_STRING_EQUAL(p->value.s.v, "empty"); - CU_ASSERT_EQUAL(p->value.s.len, strlen("empty")); + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_PAYLOAD_FORMAT_INDICATOR); + CU_ASSERT_EQUAL(p->value.i8, 1); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_MESSAGE_EXPIRY_INTERVAL); + CU_ASSERT_EQUAL(p->value.i32, 0x12450000); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_TOPIC_ALIAS); + CU_ASSERT_EQUAL(p->value.i16, 0x0002); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_RESPONSE_TOPIC); + CU_ASSERT_STRING_EQUAL(p->value.s.v, "respon"); + CU_ASSERT_EQUAL(p->value.s.len, strlen("respon")); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_CORRELATION_DATA); + CU_ASSERT_EQUAL(p->value.bin.v[0], 1); + CU_ASSERT_EQUAL(p->value.bin.v[1], 2); + CU_ASSERT_EQUAL(p->value.bin.len, 2); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_USER_PROPERTY); + CU_ASSERT_STRING_EQUAL(p->value.s.v, "value"); + CU_ASSERT_EQUAL(p->value.s.len, strlen("value")); + CU_ASSERT_STRING_EQUAL(p->name.v, "name"); + CU_ASSERT_EQUAL(p->name.len, strlen("name")); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_SUBSCRIPTION_IDENTIFIER); + CU_ASSERT_EQUAL(p->value.varint, 0x00000004); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_CONTENT_TYPE); + CU_ASSERT_STRING_EQUAL(p->value.s.v, "empty"); + CU_ASSERT_EQUAL(p->value.s.len, strlen("empty")); + } + } + } + } + } + } + } + } mosquitto_property_free_all(&properties); } @@ -1523,20 +1623,25 @@ static void TEST_packet_subscribe(void) rc = property__read_all(CMD_SUBSCRIBE, &packet, &properties); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); - CU_ASSERT_PTR_NOT_NULL(properties->next); p = properties; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_USER_PROPERTY); - CU_ASSERT_STRING_EQUAL(p->value.s.v, "value"); - CU_ASSERT_EQUAL(p->value.s.len, strlen("value")); - CU_ASSERT_STRING_EQUAL(p->name.v, "name"); - CU_ASSERT_EQUAL(p->name.len, strlen("name")); + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_USER_PROPERTY); + CU_ASSERT_STRING_EQUAL(p->value.s.v, "value"); + CU_ASSERT_EQUAL(p->value.s.len, strlen("value")); + CU_ASSERT_STRING_EQUAL(p->name.v, "name"); + CU_ASSERT_EQUAL(p->name.len, strlen("name")); - p = p->next; - CU_ASSERT_PTR_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_SUBSCRIPTION_IDENTIFIER); - CU_ASSERT_EQUAL(p->value.varint, 0x00000004); + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_SUBSCRIPTION_IDENTIFIER); + CU_ASSERT_EQUAL(p->value.varint, 0x00000004); + } + } mosquitto_property_free_all(&properties); } @@ -1565,12 +1670,15 @@ static void TEST_packet_unsubscribe(void) CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); p = properties; - CU_ASSERT_PTR_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_USER_PROPERTY); - CU_ASSERT_STRING_EQUAL(p->value.s.v, "value"); - CU_ASSERT_EQUAL(p->value.s.len, strlen("value")); - CU_ASSERT_STRING_EQUAL(p->name.v, "name"); - CU_ASSERT_EQUAL(p->name.len, strlen("name")); + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_USER_PROPERTY); + CU_ASSERT_STRING_EQUAL(p->value.s.v, "value"); + CU_ASSERT_EQUAL(p->value.s.len, strlen("value")); + CU_ASSERT_STRING_EQUAL(p->name.v, "name"); + CU_ASSERT_EQUAL(p->name.len, strlen("name")); + } mosquitto_property_free_all(&properties); } @@ -1599,26 +1707,34 @@ static void TEST_packet_disconnect(void) rc = property__read_all(CMD_DISCONNECT, &packet, &properties); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); - CU_ASSERT_PTR_NOT_NULL(properties->next); p = properties; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_SESSION_EXPIRY_INTERVAL); - CU_ASSERT_EQUAL(p->value.i32, 0x12450000); + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_SESSION_EXPIRY_INTERVAL); + CU_ASSERT_EQUAL(p->value.i32, 0x12450000); - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_REASON_STRING); - CU_ASSERT_STRING_EQUAL(p->value.s.v, "reason"); - CU_ASSERT_EQUAL(p->value.s.len, strlen("reason")); - - p = p->next; - CU_ASSERT_PTR_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_USER_PROPERTY); - CU_ASSERT_STRING_EQUAL(p->value.s.v, "value"); - CU_ASSERT_EQUAL(p->value.s.len, strlen("value")); - CU_ASSERT_STRING_EQUAL(p->name.v, "name"); - CU_ASSERT_EQUAL(p->name.len, strlen("name")); + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_REASON_STRING); + CU_ASSERT_STRING_EQUAL(p->value.s.v, "reason"); + CU_ASSERT_EQUAL(p->value.s.len, strlen("reason")); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_USER_PROPERTY); + CU_ASSERT_STRING_EQUAL(p->value.s.v, "value"); + CU_ASSERT_EQUAL(p->value.s.len, strlen("value")); + CU_ASSERT_STRING_EQUAL(p->name.v, "name"); + CU_ASSERT_EQUAL(p->name.len, strlen("name")); + } + } + } mosquitto_property_free_all(&properties); } @@ -1643,34 +1759,45 @@ static void TEST_packet_auth(void) rc = property__read_all(CMD_AUTH, &packet, &properties); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); - CU_ASSERT_PTR_NOT_NULL(properties->next); p = properties; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_AUTHENTICATION_METHOD); - CU_ASSERT_STRING_EQUAL(p->value.s.v, "none"); - CU_ASSERT_EQUAL(p->value.s.len, strlen("none")); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_AUTHENTICATION_DATA); - CU_ASSERT_EQUAL(p->value.bin.v[0], 1); - CU_ASSERT_EQUAL(p->value.bin.v[1], 2); - CU_ASSERT_EQUAL(p->value.s.len, 2); - - p = p->next; - CU_ASSERT_PTR_NOT_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_REASON_STRING); - CU_ASSERT_STRING_EQUAL(p->value.s.v, "reason"); - CU_ASSERT_EQUAL(p->value.s.len, strlen("reason")); - - p = p->next; - CU_ASSERT_PTR_NULL(p->next); - CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_USER_PROPERTY); - CU_ASSERT_STRING_EQUAL(p->value.s.v, "value"); - CU_ASSERT_EQUAL(p->value.s.len, strlen("value")); - CU_ASSERT_STRING_EQUAL(p->name.v, "name"); - CU_ASSERT_EQUAL(p->name.len, strlen("name")); + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_AUTHENTICATION_METHOD); + CU_ASSERT_STRING_EQUAL(p->value.s.v, "none"); + CU_ASSERT_EQUAL(p->value.s.len, strlen("none")); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_AUTHENTICATION_DATA); + CU_ASSERT_EQUAL(p->value.bin.v[0], 1); + CU_ASSERT_EQUAL(p->value.bin.v[1], 2); + CU_ASSERT_EQUAL(p->value.s.len, 2); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NOT_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_REASON_STRING); + CU_ASSERT_STRING_EQUAL(p->value.s.v, "reason"); + CU_ASSERT_EQUAL(p->value.s.len, strlen("reason")); + + p = p->next; + CU_ASSERT_PTR_NOT_NULL(p); + if(p){ + CU_ASSERT_PTR_NULL(p->next); + CU_ASSERT_EQUAL(p->identifier, MQTT_PROP_USER_PROPERTY); + CU_ASSERT_STRING_EQUAL(p->value.s.v, "value"); + CU_ASSERT_EQUAL(p->value.s.len, strlen("value")); + CU_ASSERT_STRING_EQUAL(p->name.v, "name"); + CU_ASSERT_EQUAL(p->name.len, strlen("name")); + } + } + } + } mosquitto_property_free_all(&properties); } diff --git a/test/unit/property_user_read.c b/test/unit/property_user_read.c index 42a8c08d..a54fd200 100644 --- a/test/unit/property_user_read.c +++ b/test/unit/property_user_read.c @@ -13,56 +13,82 @@ static void generate_full_proplist(mosquitto_property **proplist) * property. Very useful for testing though. */ rc = mosquitto_property_add_byte(proplist, MQTT_PROP_PAYLOAD_FORMAT_INDICATOR, 1); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + if(rc != MOSQ_ERR_SUCCESS) return; rc = mosquitto_property_add_int32(proplist, MQTT_PROP_MESSAGE_EXPIRY_INTERVAL, 3600); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + if(rc != MOSQ_ERR_SUCCESS) return; rc = mosquitto_property_add_string(proplist, MQTT_PROP_CONTENT_TYPE, "application/json"); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + if(rc != MOSQ_ERR_SUCCESS) return; rc = mosquitto_property_add_string(proplist, MQTT_PROP_RESPONSE_TOPIC, "response/topic"); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + if(rc != MOSQ_ERR_SUCCESS) return; rc = mosquitto_property_add_binary(proplist, MQTT_PROP_CORRELATION_DATA, "correlation-data", strlen("correlation-data")); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + if(rc != MOSQ_ERR_SUCCESS) return; rc = mosquitto_property_add_varint(proplist, MQTT_PROP_SUBSCRIPTION_IDENTIFIER, 63); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + if(rc != MOSQ_ERR_SUCCESS) return; rc = mosquitto_property_add_int32(proplist, MQTT_PROP_SESSION_EXPIRY_INTERVAL, 86400); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + if(rc != MOSQ_ERR_SUCCESS) return; rc = mosquitto_property_add_string(proplist, MQTT_PROP_ASSIGNED_CLIENT_IDENTIFIER, "mosquitto-test"); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + if(rc != MOSQ_ERR_SUCCESS) return; rc = mosquitto_property_add_int16(proplist, MQTT_PROP_SERVER_KEEP_ALIVE, 180); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + if(rc != MOSQ_ERR_SUCCESS) return; rc = mosquitto_property_add_string(proplist, MQTT_PROP_AUTHENTICATION_METHOD, "basic"); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + if(rc != MOSQ_ERR_SUCCESS) return; rc = mosquitto_property_add_binary(proplist, MQTT_PROP_AUTHENTICATION_DATA, "password", strlen("password")); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + if(rc != MOSQ_ERR_SUCCESS) return; rc = mosquitto_property_add_byte(proplist, MQTT_PROP_REQUEST_PROBLEM_INFORMATION, 1); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + if(rc != MOSQ_ERR_SUCCESS) return; rc = mosquitto_property_add_int32(proplist, MQTT_PROP_WILL_DELAY_INTERVAL, 1800); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + if(rc != MOSQ_ERR_SUCCESS) return; rc = mosquitto_property_add_byte(proplist, MQTT_PROP_REQUEST_RESPONSE_INFORMATION, 1); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + if(rc != MOSQ_ERR_SUCCESS) return; rc = mosquitto_property_add_string(proplist, MQTT_PROP_RESPONSE_INFORMATION, "response"); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + if(rc != MOSQ_ERR_SUCCESS) return; rc = mosquitto_property_add_string(proplist, MQTT_PROP_SERVER_REFERENCE, "localhost"); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + if(rc != MOSQ_ERR_SUCCESS) return; rc = mosquitto_property_add_string(proplist, MQTT_PROP_REASON_STRING, "reason"); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + if(rc != MOSQ_ERR_SUCCESS) return; rc = mosquitto_property_add_int16(proplist, MQTT_PROP_RECEIVE_MAXIMUM, 1024); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + if(rc != MOSQ_ERR_SUCCESS) return; rc = mosquitto_property_add_int16(proplist, MQTT_PROP_TOPIC_ALIAS_MAXIMUM, 64); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + if(rc != MOSQ_ERR_SUCCESS) return; rc = mosquitto_property_add_int16(proplist, MQTT_PROP_TOPIC_ALIAS, 15); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + if(rc != MOSQ_ERR_SUCCESS) return; rc = mosquitto_property_add_byte(proplist, MQTT_PROP_MAXIMUM_QOS, 0); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + if(rc != MOSQ_ERR_SUCCESS) return; rc = mosquitto_property_add_byte(proplist, MQTT_PROP_RETAIN_AVAILABLE, 0); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + if(rc != MOSQ_ERR_SUCCESS) return; rc = mosquitto_property_add_string_pair(proplist, MQTT_PROP_USER_PROPERTY, "user-agent", "mosquitto/test"); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + if(rc != MOSQ_ERR_SUCCESS) return; rc = mosquitto_property_add_int32(proplist, MQTT_PROP_MAXIMUM_PACKET_SIZE, 200000000); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + if(rc != MOSQ_ERR_SUCCESS) return; rc = mosquitto_property_add_byte(proplist, MQTT_PROP_WILDCARD_SUB_AVAILABLE, 0); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + if(rc != MOSQ_ERR_SUCCESS) return; rc = mosquitto_property_add_byte(proplist, MQTT_PROP_SUBSCRIPTION_ID_AVAILABLE, 0); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); + if(rc != MOSQ_ERR_SUCCESS) return; rc = mosquitto_property_add_byte(proplist, MQTT_PROP_SHARED_SUB_AVAILABLE, 0); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); } @@ -167,36 +193,50 @@ static void read_varint_helper(const mosquitto_property *proplist, int identifie static void read_binary_helper(const mosquitto_property *proplist, int identifier, void *expected_value, int expected_length) { const mosquitto_property *prop; - void *value; + void *value = NULL; int length; prop = mosquitto_property_read_binary(proplist, identifier, &value, &length, false); CU_ASSERT_PTR_NOT_NULL(prop); CU_ASSERT_EQUAL(length, expected_length); - CU_ASSERT_NSTRING_EQUAL(value, expected_value, expected_length); + CU_ASSERT_PTR_NOT_NULL(value); + if(value){ + CU_ASSERT_NSTRING_EQUAL(value, expected_value, expected_length); + } free(value); } static void read_string_helper(const mosquitto_property *proplist, int identifier, char *expected_value) { const mosquitto_property *prop; - char *value; + char *value = NULL; prop = mosquitto_property_read_string(proplist, identifier, &value, false); CU_ASSERT_PTR_NOT_NULL(prop); - CU_ASSERT_STRING_EQUAL(value, expected_value); + CU_ASSERT_PTR_NOT_NULL(value); + if(value){ + CU_ASSERT_STRING_EQUAL(value, expected_value); + } free(value); } static void read_string_pair_helper(const mosquitto_property *proplist, int identifier, char *expected_key, char *expected_value) { const mosquitto_property *prop; - char *key, *value; + char *key = NULL, *value = NULL; prop = mosquitto_property_read_string_pair(proplist, identifier, &key, &value, false); CU_ASSERT_PTR_NOT_NULL(prop); - CU_ASSERT_STRING_EQUAL(key, expected_key); - CU_ASSERT_STRING_EQUAL(value, expected_value); + + CU_ASSERT_PTR_NOT_NULL(key); + if(key){ + CU_ASSERT_STRING_EQUAL(key, expected_key); + } + + CU_ASSERT_PTR_NOT_NULL(value); + if(value){ + CU_ASSERT_STRING_EQUAL(value, expected_value); + } free(key); free(value); } @@ -323,8 +363,10 @@ static void TEST_read_single_binary(void) CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); CU_ASSERT_PTR_NOT_NULL(proplist_copy); - read_binary_helper(proplist_copy, MQTT_PROP_CORRELATION_DATA, "correlation-data", strlen("correlation-data")); - read_binary_helper(proplist_copy, MQTT_PROP_AUTHENTICATION_DATA, "password", strlen("password")); + if(proplist_copy){ + read_binary_helper(proplist_copy, MQTT_PROP_CORRELATION_DATA, "correlation-data", strlen("correlation-data")); + read_binary_helper(proplist_copy, MQTT_PROP_AUTHENTICATION_DATA, "password", strlen("password")); + } mosquitto_property_free_all(&proplist); mosquitto_property_free_all(&proplist_copy); @@ -350,13 +392,15 @@ static void TEST_read_single_string(void) CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); CU_ASSERT_PTR_NOT_NULL(proplist_copy); - read_string_helper(proplist_copy, MQTT_PROP_CONTENT_TYPE, "application/json"); - read_string_helper(proplist_copy, MQTT_PROP_RESPONSE_TOPIC, "response/topic"); - read_string_helper(proplist_copy, MQTT_PROP_ASSIGNED_CLIENT_IDENTIFIER, "mosquitto-test"); - read_string_helper(proplist_copy, MQTT_PROP_AUTHENTICATION_METHOD, "basic"); - read_string_helper(proplist_copy, MQTT_PROP_RESPONSE_INFORMATION, "response"); - read_string_helper(proplist_copy, MQTT_PROP_SERVER_REFERENCE, "localhost"); - read_string_helper(proplist_copy, MQTT_PROP_REASON_STRING, "reason"); + if(proplist_copy){ + read_string_helper(proplist_copy, MQTT_PROP_CONTENT_TYPE, "application/json"); + read_string_helper(proplist_copy, MQTT_PROP_RESPONSE_TOPIC, "response/topic"); + read_string_helper(proplist_copy, MQTT_PROP_ASSIGNED_CLIENT_IDENTIFIER, "mosquitto-test"); + read_string_helper(proplist_copy, MQTT_PROP_AUTHENTICATION_METHOD, "basic"); + read_string_helper(proplist_copy, MQTT_PROP_RESPONSE_INFORMATION, "response"); + read_string_helper(proplist_copy, MQTT_PROP_SERVER_REFERENCE, "localhost"); + read_string_helper(proplist_copy, MQTT_PROP_REASON_STRING, "reason"); + } mosquitto_property_free_all(&proplist); mosquitto_property_free_all(&proplist_copy); @@ -376,7 +420,9 @@ static void TEST_read_single_string_pair(void) CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); CU_ASSERT_PTR_NOT_NULL(proplist_copy); - read_string_pair_helper(proplist_copy, MQTT_PROP_USER_PROPERTY, "user-agent", "mosquitto/test"); + if(proplist_copy){ + read_string_pair_helper(proplist_copy, MQTT_PROP_USER_PROPERTY, "user-agent", "mosquitto/test"); + } mosquitto_property_free_all(&proplist); mosquitto_property_free_all(&proplist_copy); @@ -471,7 +517,9 @@ static void TEST_read_missing(void) rc = mosquitto_property_copy_all(&proplist_copy, proplist); CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS); CU_ASSERT_PTR_NOT_NULL(proplist_copy); - missing_read_helper(proplist_copy); + if(proplist_copy){ + missing_read_helper(proplist_copy); + } mosquitto_property_free_all(&proplist); mosquitto_property_free_all(&proplist_copy); diff --git a/test/unit/property_write.c b/test/unit/property_write.c index 7a4a3d04..2618fee7 100644 --- a/test/unit/property_write.c +++ b/test/unit/property_write.c @@ -27,6 +27,9 @@ static void byte_prop_write_helper( packet.packet_length = packet.remaining_length+10; packet.payload = calloc(packet.remaining_length+10, 1); + CU_ASSERT_PTR_NOT_NULL(packet.payload); + if(!packet.payload) return; + property__write_all(&packet, &property, true); packet.pos = 0; @@ -68,6 +71,9 @@ static void int32_prop_write_helper( packet.packet_length = packet.remaining_length+10; packet.payload = calloc(packet.remaining_length+10, 1); + CU_ASSERT_PTR_NOT_NULL(packet.payload); + if(!packet.payload) return; + property__write_all(&packet, &property, true); packet.pos = 0; @@ -109,6 +115,9 @@ static void int16_prop_write_helper( packet.packet_length = packet.remaining_length+10; packet.payload = calloc(packet.remaining_length+10, 1); + CU_ASSERT_PTR_NOT_NULL(packet.payload); + if(!packet.payload) return; + property__write_all(&packet, &property, true); packet.pos = 0; @@ -143,6 +152,9 @@ static void string_prop_write_helper( property.identifier = identifier; property.value.s.v = strdup(value_expected); + CU_ASSERT_PTR_NOT_NULL(property.value.s.v); + if(!property.value.s.v) return; + property.value.s.len = strlen(value_expected); memset(&packet, 0, sizeof(struct mosquitto__packet)); @@ -150,6 +162,9 @@ static void string_prop_write_helper( packet.packet_length = packet.remaining_length+10; packet.payload = calloc(packet.remaining_length+10, 1); + CU_ASSERT_PTR_NOT_NULL(packet.payload); + if(!packet.payload) return; + property__write_all(&packet, &property, true); packet.pos = 0; @@ -188,6 +203,9 @@ static void binary_prop_write_helper( property.identifier = identifier; property.value.bin.v = malloc(len_expected); + CU_ASSERT_PTR_NOT_NULL(property.value.bin.v); + if(!property.value.bin.v) return; + memcpy(property.value.bin.v, value_expected, len_expected); property.value.bin.len = len_expected; @@ -196,6 +214,9 @@ static void binary_prop_write_helper( packet.packet_length = packet.remaining_length+10; packet.payload = calloc(packet.remaining_length+10, 1); + CU_ASSERT_PTR_NOT_NULL(packet.payload); + if(!packet.payload) return; + property__write_all(&packet, &property, true); packet.pos = 0; @@ -233,8 +254,14 @@ static void string_pair_prop_write_helper( property.identifier = identifier; property.value.s.v = strdup(value_expected); + CU_ASSERT_PTR_NOT_NULL(property.value.s.v); + if(!property.value.s.v) return; property.value.s.len = strlen(value_expected); + property.name.v = strdup(name_expected); + CU_ASSERT_PTR_NOT_NULL(property.name.v); + if(!property.name.v) return; + property.name.len = strlen(name_expected); memset(&packet, 0, sizeof(struct mosquitto__packet)); @@ -242,6 +269,9 @@ static void string_pair_prop_write_helper( packet.packet_length = packet.remaining_length+10; packet.payload = calloc(packet.remaining_length+10, 1); + CU_ASSERT_PTR_NOT_NULL(packet.payload); + if(!packet.payload) return; + property__write_all(&packet, &property, true); packet.pos = 0; @@ -290,6 +320,9 @@ static void varint_prop_write_helper( packet.packet_length = packet.remaining_length+10; packet.payload = calloc(packet.remaining_length+10, 1); + CU_ASSERT_PTR_NOT_NULL(packet.payload); + if(!packet.payload) return; + property__write_all(&packet, &property, true); packet.pos = 0;