Check whether properties are on the correct commands.

pull/1022/head
Roger A. Light 7 years ago
parent 267178bd99
commit 723d9c2782

@ -45,6 +45,9 @@ Contributors:
#define DISCONNECT 0xE0
#define AUTH 0xF0
/* For distinguishing CONNECT and WILL properties */
#define CMD_WILL 0
enum mqtt311_connack_codes {
CONNACK_ACCEPTED = 0,
CONNACK_REFUSED_PROTOCOL_VERSION = 1,

@ -26,6 +26,9 @@ Contributors:
#include "packet_mosq.h"
#include "property_mosq.h"
static int property__command_check(int command, struct mqtt5__property *properties);
int property__read(struct mosquitto__packet *packet, int32_t *len, struct mqtt5__property *property)
{
int rc;
@ -138,7 +141,7 @@ int property__read(struct mosquitto__packet *packet, int32_t *len, struct mqtt5_
}
int property__read_all(struct mosquitto__packet *packet, struct mqtt5__property **properties)
int property__read_all(int command, struct mosquitto__packet *packet, struct mqtt5__property **properties)
{
int rc;
int32_t proplen;
@ -197,6 +200,7 @@ int property__read_all(struct mosquitto__packet *packet, struct mqtt5__property
}
}
/* Check for duplicates */
current = *properties;
while(current){
tail = current->next;
@ -212,6 +216,11 @@ int property__read_all(struct mosquitto__packet *packet, struct mqtt5__property
current = current->next;
}
/* Check for properties on incorrect commands */
if(property__command_check(command, *properties)){
property__free_all(properties);
return MOSQ_ERR_PROTOCOL;
}
return MOSQ_ERR_SUCCESS;
}
@ -441,3 +450,104 @@ int property__write_all(struct mosquitto__packet *packet, struct mqtt5__property
return MOSQ_ERR_SUCCESS;
}
static int property__command_check(int command, struct mqtt5__property *properties)
{
struct mqtt5__property *p;
p = properties;
while(p){
switch(p->identifier){
case PROP_PAYLOAD_FORMAT_INDICATOR:
case PROP_MESSAGE_EXPIRY_INTERVAL:
case PROP_CONTENT_TYPE:
case PROP_RESPONSE_TOPIC:
case PROP_CORRELATION_DATA:
if(command != PUBLISH && command != 0){
return MOSQ_ERR_PROTOCOL;
}
break;
case PROP_SUBSCRIPTION_IDENTIFIER:
if(command != PUBLISH && command != SUBSCRIBE){
return MOSQ_ERR_PROTOCOL;
}
break;
case PROP_SESSION_EXPIRY_INTERVAL:
if(command != CONNECT && command != CONNACK && command != DISCONNECT){
return MOSQ_ERR_PROTOCOL;
}
break;
case PROP_AUTHENTICATION_METHOD:
case PROP_AUTHENTICATION_DATA:
if(command != CONNECT && command != CONNACK && command != AUTH){
return MOSQ_ERR_PROTOCOL;
}
break;
case PROP_ASSIGNED_CLIENT_IDENTIFIER:
case PROP_SERVER_KEEP_ALIVE:
case PROP_RESPONSE_INFO:
case PROP_MAXIMUM_QOS:
case PROP_RETAIN_AVAILABLE:
case PROP_WILDCARD_SUB_AVAILABLE:
case PROP_SUBSCRIPTION_ID_AVAILABLE:
case PROP_SHARED_SUB_AVAILABLE:
if(command != CONNACK){
return MOSQ_ERR_PROTOCOL;
}
break;
case PROP_WILL_DELAY_INTERVAL:
if(command != 0){
return MOSQ_ERR_PROTOCOL;
}
break;
case PROP_REQUEST_PROBLEM_INFO:
case PROP_REQUEST_RESPONSE_INFO:
if(command != CONNECT){
return MOSQ_ERR_PROTOCOL;
}
break;
case PROP_SERVER_REFERENCE:
if(command != CONNACK && command != DISCONNECT){
return MOSQ_ERR_PROTOCOL;
}
break;
case PROP_REASON_STRING:
if(command == CONNECT || command == PUBLISH || command == SUBSCRIBE || command == UNSUBSCRIBE){
return MOSQ_ERR_PROTOCOL;
}
break;
case PROP_RECEIVE_MAXIMUM:
case PROP_TOPIC_ALIAS_MAXIMUM:
case PROP_MAXIMUM_PACKET_SIZE:
if(command != CONNECT && command != CONNACK){
return MOSQ_ERR_PROTOCOL;
}
break;
case PROP_TOPIC_ALIAS:
if(command != PUBLISH){
return MOSQ_ERR_PROTOCOL;
}
break;
case PROP_USER_PROPERTY:
break;
default:
return MOSQ_ERR_PROTOCOL;
}
p = p->next;
}
return MOSQ_ERR_SUCCESS;
}

@ -39,7 +39,7 @@ struct mqtt5__property {
};
int property__read_all(struct mosquitto__packet *packet, struct mqtt5__property **property);
int property__read_all(int command, struct mosquitto__packet *packet, struct mqtt5__property **property);
int property__write_all(struct mosquitto__packet *packet, struct mqtt5__property *property);
void property__free(struct mqtt5__property **property);
void property__free_all(struct mqtt5__property **property);

@ -242,7 +242,7 @@ int handle__connect(struct mosquitto_db *db, struct mosquitto *context)
}
if(protocol_version == PROTOCOL_VERSION_v5){
rc = property__read_all(&context->in_packet, &properties);
rc = property__read_all(CONNECT, &context->in_packet, &properties);
if(rc) return rc;
property__free_all(&properties);
}
@ -302,7 +302,7 @@ int handle__connect(struct mosquitto_db *db, struct mosquitto *context)
goto handle_connect_error;
}
if(protocol_version == PROTOCOL_VERSION_v5){
rc = property__read_all(&context->in_packet, &will_struct->properties);
rc = property__read_all(CMD_WILL, &context->in_packet, &will_struct->properties);
if(rc) return rc;
property__free_all(&will_struct->properties);
}

@ -134,7 +134,7 @@ int handle__publish(struct mosquitto_db *db, struct mosquitto *context)
}
if(context->protocol == mosq_p_mqtt5){
rc = property__read_all(&context->in_packet, &properties);
rc = property__read_all(PUBLISH, &context->in_packet, &properties);
if(rc) return rc;
}

@ -21,6 +21,7 @@ Contributors:
#include "mosquitto_broker_internal.h"
#include "memory_mosq.h"
#include "mqtt_protocol.h"
#include "packet_mosq.h"
#include "property_mosq.h"
@ -52,7 +53,7 @@ int handle__subscribe(struct mosquitto_db *db, struct mosquitto *context)
if(packet__read_uint16(&context->in_packet, &mid)) return 1;
if(context->protocol == mosq_p_mqtt5){
rc = property__read_all(&context->in_packet, &properties);
rc = property__read_all(SUBSCRIBE, &context->in_packet, &properties);
if(rc) return rc;
property__free_all(&properties);
}

@ -6,6 +6,7 @@
#include "packet_mosq.h"
static void byte_prop_read_helper(
int command,
uint8_t *payload,
int remaining_length,
int rc_expected,
@ -19,7 +20,7 @@ static void byte_prop_read_helper(
memset(&packet, 0, sizeof(struct mosquitto__packet));
packet.payload = payload;
packet.remaining_length = remaining_length;
rc = property__read_all(&packet, &properties);
rc = property__read_all(command, &packet, &properties);
CU_ASSERT_EQUAL(rc, rc_expected);
CU_ASSERT_EQUAL(packet.pos, remaining_length);
@ -33,7 +34,7 @@ static void byte_prop_read_helper(
CU_ASSERT_PTR_EQUAL(properties, NULL);
}
static void duplicate_byte_helper(int identifier)
static void duplicate_byte_helper(int command, int identifier)
{
uint8_t payload[20];
@ -44,10 +45,10 @@ static void duplicate_byte_helper(int identifier)
payload[3] = identifier;
payload[4] = 0;
byte_prop_read_helper(payload, 5, MOSQ_ERR_PROTOCOL, identifier, 1);
byte_prop_read_helper(command, payload, 5, MOSQ_ERR_PROTOCOL, identifier, 1);
}
static void bad_byte_helper(int identifier)
static void bad_byte_helper(int command, int identifier)
{
uint8_t payload[20];
@ -56,11 +57,12 @@ static void bad_byte_helper(int identifier)
payload[1] = identifier;
payload[2] = 2; /* 0, 1 are only valid values */
byte_prop_read_helper(payload, 3, MOSQ_ERR_PROTOCOL, identifier, 0);
byte_prop_read_helper(command, payload, 3, MOSQ_ERR_PROTOCOL, identifier, 0);
}
static void int32_prop_read_helper(
int command,
uint8_t *payload,
int remaining_length,
int rc_expected,
@ -74,7 +76,7 @@ static void int32_prop_read_helper(
memset(&packet, 0, sizeof(struct mosquitto__packet));
packet.payload = payload;
packet.remaining_length = remaining_length;
rc = property__read_all(&packet, &properties);
rc = property__read_all(command, &packet, &properties);
CU_ASSERT_EQUAL(rc, rc_expected);
CU_ASSERT_EQUAL(packet.pos, remaining_length);
@ -88,7 +90,7 @@ static void int32_prop_read_helper(
CU_ASSERT_PTR_EQUAL(properties, NULL);
}
static void duplicate_int32_helper(int identifier)
static void duplicate_int32_helper(int command, int identifier)
{
uint8_t payload[20];
@ -105,11 +107,12 @@ static void duplicate_int32_helper(int identifier)
payload[9] = 0;
payload[10] = 0;
int32_prop_read_helper(payload, 11, MOSQ_ERR_PROTOCOL, identifier, 1);
int32_prop_read_helper(command, payload, 11, MOSQ_ERR_PROTOCOL, identifier, 1);
}
static void int16_prop_read_helper(
int command,
uint8_t *payload,
int remaining_length,
int rc_expected,
@ -123,7 +126,7 @@ static void int16_prop_read_helper(
memset(&packet, 0, sizeof(struct mosquitto__packet));
packet.payload = payload;
packet.remaining_length = remaining_length;
rc = property__read_all(&packet, &properties);
rc = property__read_all(command, &packet, &properties);
CU_ASSERT_EQUAL(rc, rc_expected);
CU_ASSERT_EQUAL(packet.pos, remaining_length);
@ -137,7 +140,7 @@ static void int16_prop_read_helper(
CU_ASSERT_PTR_EQUAL(properties, NULL);
}
static void duplicate_int16_helper(int identifier)
static void duplicate_int16_helper(int command, int identifier)
{
uint8_t payload[20];
@ -150,10 +153,11 @@ static void duplicate_int16_helper(int identifier)
payload[5] = 0;
payload[6] = 0;
int16_prop_read_helper(payload, 7, MOSQ_ERR_PROTOCOL, identifier, 1);
int16_prop_read_helper(command, payload, 7, MOSQ_ERR_PROTOCOL, identifier, 1);
}
static void string_prop_read_helper(
int command,
uint8_t *payload,
int remaining_length,
int rc_expected,
@ -167,7 +171,7 @@ static void string_prop_read_helper(
memset(&packet, 0, sizeof(struct mosquitto__packet));
packet.payload = payload;
packet.remaining_length = remaining_length;
rc = property__read_all(&packet, &properties);
rc = property__read_all(command, &packet, &properties);
CU_ASSERT_EQUAL(rc, rc_expected);
CU_ASSERT_EQUAL(packet.pos, remaining_length);
@ -197,7 +201,7 @@ static void duplicate_string_helper(int identifier)
payload[7] = 1;
payload[8] = 'h';
string_prop_read_helper(payload, 9, MOSQ_ERR_PROTOCOL, identifier, "");
string_prop_read_helper(PUBLISH, payload, 9, MOSQ_ERR_PROTOCOL, identifier, "");
}
static void bad_string_helper(int identifier)
@ -213,10 +217,11 @@ static void bad_string_helper(int identifier)
payload[5] = 0; /* 0 in string not allowed */
payload[6] = 'h';
string_prop_read_helper(payload, 7, MOSQ_ERR_MALFORMED_UTF8, identifier, "");
string_prop_read_helper(PUBLISH, payload, 7, MOSQ_ERR_MALFORMED_UTF8, identifier, "");
}
static void binary_prop_read_helper(
int command,
uint8_t *payload,
int remaining_length,
int rc_expected,
@ -231,7 +236,7 @@ static void binary_prop_read_helper(
memset(&packet, 0, sizeof(struct mosquitto__packet));
packet.payload = payload;
packet.remaining_length = remaining_length;
rc = property__read_all(&packet, &properties);
rc = property__read_all(command, &packet, &properties);
CU_ASSERT_EQUAL(rc, rc_expected);
CU_ASSERT_EQUAL(packet.pos, remaining_length);
@ -246,7 +251,7 @@ static void binary_prop_read_helper(
CU_ASSERT_PTR_EQUAL(properties, NULL);
}
static void duplicate_binary_helper(int identifier)
static void duplicate_binary_helper(int command, int identifier)
{
uint8_t payload[20];
@ -261,7 +266,7 @@ static void duplicate_binary_helper(int identifier)
payload[7] = 1;
payload[8] = 'h';
string_prop_read_helper(payload, 9, MOSQ_ERR_PROTOCOL, identifier, "");
string_prop_read_helper(command, payload, 9, MOSQ_ERR_PROTOCOL, identifier, "");
}
static void string_pair_prop_read_helper(
@ -280,7 +285,7 @@ static void string_pair_prop_read_helper(
memset(&packet, 0, sizeof(struct mosquitto__packet));
packet.payload = payload;
packet.remaining_length = remaining_length;
rc = property__read_all(&packet, &properties);
rc = property__read_all(CONNECT, &packet, &properties);
CU_ASSERT_EQUAL(rc, rc_expected);
CU_ASSERT_EQUAL(packet.pos, remaining_length);
@ -315,30 +320,20 @@ static void varint_prop_read_helper(
memset(&packet, 0, sizeof(struct mosquitto__packet));
packet.payload = payload;
packet.remaining_length = remaining_length;
rc = property__read_all(&packet, &properties);
rc = property__read_all(PUBLISH, &packet, &properties);
CU_ASSERT_EQUAL(rc, rc_expected);
if(properties){
CU_ASSERT_EQUAL(properties->identifier, identifier);
CU_ASSERT_EQUAL(properties->value.varint, value_expected);
CU_ASSERT_PTR_NULL(properties->next);
if(value_expected < 128){
CU_ASSERT_EQUAL(property__get_length_all(properties), 2);
}else if(value_expected < 16384){
CU_ASSERT_EQUAL(property__get_length_all(properties), 3);
}else if(value_expected < 2097152){
CU_ASSERT_EQUAL(property__get_length_all(properties), 4);
}else if(value_expected < 268435456){
CU_ASSERT_EQUAL(property__get_length_all(properties), 5);
}else{
CU_FAIL("Incorrect varint value.");
}
CU_ASSERT_EQUAL(property__get_length_all(properties), packet__varint_bytes(value_expected)+1);
property__free_all(&properties);
}
CU_ASSERT_PTR_NULL(properties);
}
static void packet_helper_reason_string_user_property(void)
static void packet_helper_reason_string_user_property(int command)
{
uint8_t payload[24] = {23,
PROP_REASON_STRING, 0, 6, 'r', 'e', 'a', 's', 'o', 'n',
@ -351,26 +346,29 @@ static void packet_helper_reason_string_user_property(void)
memset(&packet, 0, sizeof(struct mosquitto__packet));
packet.payload = payload;
packet.remaining_length = sizeof(payload);;
rc = property__read_all(&packet, &properties);
rc = property__read_all(command, &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(properties){
CU_ASSERT_PTR_NOT_NULL(properties->next);
p = properties;
CU_ASSERT_EQUAL(p->identifier, PROP_REASON_STRING);
CU_ASSERT_STRING_EQUAL(p->value.s.v, "reason");
CU_ASSERT_EQUAL(p->value.s.len, strlen("reason"));
CU_ASSERT_EQUAL(p->identifier, 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);
p = p->next;
CU_ASSERT_PTR_NULL(p->next);
CU_ASSERT_EQUAL(p->identifier, 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_EQUAL(p->identifier, 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"));
property__free_all(&properties);
property__free_all(&properties);
}
}
/* ========================================================================
@ -388,7 +386,7 @@ static void TEST_no_properties(void)
memset(payload, 0, sizeof(payload));
packet.payload = payload;
packet.remaining_length = 1;
rc = property__read_all(&packet, &properties);
rc = property__read_all(CONNECT, &packet, &properties);
CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS);
CU_ASSERT_PTR_EQUAL(properties, NULL);
CU_ASSERT_EQUAL(packet.pos, 1);
@ -406,7 +404,7 @@ static void TEST_truncated(void)
memset(payload, 0, sizeof(payload));
packet.payload = payload;
packet.remaining_length = 0;
rc = property__read_all(&packet, &properties);
rc = property__read_all(CONNECT, &packet, &properties);
CU_ASSERT_EQUAL(rc, MOSQ_ERR_PROTOCOL);
CU_ASSERT_PTR_EQUAL(properties, NULL);
CU_ASSERT_EQUAL(packet.pos, 0);
@ -417,7 +415,7 @@ static void TEST_truncated(void)
payload[0] = 2;
packet.payload = payload;
packet.remaining_length = 1;
rc = property__read_all(&packet, &properties);
rc = property__read_all(CONNECT, &packet, &properties);
CU_ASSERT_EQUAL(rc, MOSQ_ERR_PROTOCOL);
CU_ASSERT_PTR_EQUAL(properties, NULL);
CU_ASSERT_EQUAL(packet.pos, 1);
@ -429,7 +427,7 @@ static void TEST_truncated(void)
payload[1] = PROP_PAYLOAD_FORMAT_INDICATOR;
packet.payload = payload;
packet.remaining_length = 2;
rc = property__read_all(&packet, &properties);
rc = property__read_all(CONNECT, &packet, &properties);
CU_ASSERT_EQUAL(rc, MOSQ_ERR_PROTOCOL);
CU_ASSERT_PTR_EQUAL(properties, NULL);
CU_ASSERT_EQUAL(packet.pos, 2);
@ -452,7 +450,7 @@ static void TEST_invalid_property_id(void)
payload[0] = 4;
packet.payload = payload;
packet.remaining_length = 2;
rc = property__read_all(&packet, &properties);
rc = property__read_all(CONNECT, &packet, &properties);
CU_ASSERT_EQUAL(rc, MOSQ_ERR_MALFORMED_PACKET);
CU_ASSERT_PTR_EQUAL(properties, NULL);
CU_ASSERT_EQUAL(packet.pos, 2);
@ -464,7 +462,7 @@ static void TEST_invalid_property_id(void)
payload[1] = 4;
packet.payload = payload;
packet.remaining_length = 2;
rc = property__read_all(&packet, &properties);
rc = property__read_all(CONNECT, &packet, &properties);
CU_ASSERT_EQUAL(rc, MOSQ_ERR_MALFORMED_PACKET);
CU_ASSERT_PTR_EQUAL(properties, NULL);
CU_ASSERT_EQUAL(packet.pos, 2);
@ -483,7 +481,7 @@ static void TEST_single_payload_format_indicator(void)
payload[1] = PROP_PAYLOAD_FORMAT_INDICATOR;
payload[2] = 1;
byte_prop_read_helper(payload, 3, MOSQ_ERR_SUCCESS, PROP_PAYLOAD_FORMAT_INDICATOR, 1);
byte_prop_read_helper(PUBLISH, payload, 3, MOSQ_ERR_SUCCESS, PROP_PAYLOAD_FORMAT_INDICATOR, 1);
}
static void TEST_single_request_problem_information(void)
@ -495,7 +493,7 @@ static void TEST_single_request_problem_information(void)
payload[1] = PROP_REQUEST_PROBLEM_INFO;
payload[2] = 1;
byte_prop_read_helper(payload, 3, MOSQ_ERR_SUCCESS, PROP_REQUEST_PROBLEM_INFO, 1);
byte_prop_read_helper(CONNECT, payload, 3, MOSQ_ERR_SUCCESS, PROP_REQUEST_PROBLEM_INFO, 1);
}
static void TEST_single_request_response_information(void)
@ -507,7 +505,7 @@ static void TEST_single_request_response_information(void)
payload[1] = PROP_REQUEST_RESPONSE_INFO;
payload[2] = 1;
byte_prop_read_helper(payload, 3, MOSQ_ERR_SUCCESS, PROP_REQUEST_RESPONSE_INFO, 1);
byte_prop_read_helper(CONNECT, payload, 3, MOSQ_ERR_SUCCESS, PROP_REQUEST_RESPONSE_INFO, 1);
}
static void TEST_single_maximum_qos(void)
@ -519,7 +517,7 @@ static void TEST_single_maximum_qos(void)
payload[1] = PROP_MAXIMUM_QOS;
payload[2] = 1;
byte_prop_read_helper(payload, 3, MOSQ_ERR_SUCCESS, PROP_MAXIMUM_QOS, 1);
byte_prop_read_helper(CONNACK, payload, 3, MOSQ_ERR_SUCCESS, PROP_MAXIMUM_QOS, 1);
}
static void TEST_single_retain_available(void)
@ -531,7 +529,7 @@ static void TEST_single_retain_available(void)
payload[1] = PROP_RETAIN_AVAILABLE;
payload[2] = 1;
byte_prop_read_helper(payload, 3, MOSQ_ERR_SUCCESS, PROP_RETAIN_AVAILABLE, 1);
byte_prop_read_helper(CONNACK, payload, 3, MOSQ_ERR_SUCCESS, PROP_RETAIN_AVAILABLE, 1);
}
static void TEST_single_wildcard_subscription_available(void)
@ -543,7 +541,7 @@ static void TEST_single_wildcard_subscription_available(void)
payload[1] = PROP_WILDCARD_SUB_AVAILABLE;
payload[2] = 0;
byte_prop_read_helper(payload, 3, MOSQ_ERR_SUCCESS, PROP_WILDCARD_SUB_AVAILABLE, 0);
byte_prop_read_helper(CONNACK, payload, 3, MOSQ_ERR_SUCCESS, PROP_WILDCARD_SUB_AVAILABLE, 0);
}
static void TEST_single_subscription_identifier_available(void)
@ -555,7 +553,7 @@ static void TEST_single_subscription_identifier_available(void)
payload[1] = PROP_SUBSCRIPTION_ID_AVAILABLE;
payload[2] = 0;
byte_prop_read_helper(payload, 3, MOSQ_ERR_SUCCESS, PROP_SUBSCRIPTION_ID_AVAILABLE, 0);
byte_prop_read_helper(CONNACK, payload, 3, MOSQ_ERR_SUCCESS, PROP_SUBSCRIPTION_ID_AVAILABLE, 0);
}
static void TEST_single_shared_subscription_available(void)
@ -567,7 +565,7 @@ static void TEST_single_shared_subscription_available(void)
payload[1] = PROP_SHARED_SUB_AVAILABLE;
payload[2] = 1;
byte_prop_read_helper(payload, 3, MOSQ_ERR_SUCCESS, PROP_SHARED_SUB_AVAILABLE, 1);
byte_prop_read_helper(CONNACK, payload, 3, MOSQ_ERR_SUCCESS, PROP_SHARED_SUB_AVAILABLE, 1);
}
static void TEST_single_message_expiry_interval(void)
@ -582,7 +580,7 @@ static void TEST_single_message_expiry_interval(void)
payload[4] = 0x34;
payload[5] = 0x45;
int32_prop_read_helper(payload, 6, MOSQ_ERR_SUCCESS, PROP_MESSAGE_EXPIRY_INTERVAL, 0x12233445);
int32_prop_read_helper(CMD_WILL, payload, 6, MOSQ_ERR_SUCCESS, PROP_MESSAGE_EXPIRY_INTERVAL, 0x12233445);
}
static void TEST_single_session_expiry_interval(void)
@ -597,7 +595,7 @@ static void TEST_single_session_expiry_interval(void)
payload[4] = 0x23;
payload[5] = 0x12;
int32_prop_read_helper(payload, 6, MOSQ_ERR_SUCCESS, PROP_SESSION_EXPIRY_INTERVAL, 0x45342312);
int32_prop_read_helper(CONNACK, payload, 6, MOSQ_ERR_SUCCESS, PROP_SESSION_EXPIRY_INTERVAL, 0x45342312);
}
static void TEST_single_will_delay_interval(void)
@ -612,7 +610,7 @@ static void TEST_single_will_delay_interval(void)
payload[4] = 0x23;
payload[5] = 0x12;
int32_prop_read_helper(payload, 6, MOSQ_ERR_SUCCESS, PROP_WILL_DELAY_INTERVAL, 0x45342312);
int32_prop_read_helper(CMD_WILL, payload, 6, MOSQ_ERR_SUCCESS, PROP_WILL_DELAY_INTERVAL, 0x45342312);
}
static void TEST_single_maximum_packet_size(void)
@ -627,7 +625,7 @@ static void TEST_single_maximum_packet_size(void)
payload[4] = 0x23;
payload[5] = 0x12;
int32_prop_read_helper(payload, 6, MOSQ_ERR_SUCCESS, PROP_MAXIMUM_PACKET_SIZE, 0x45342312);
int32_prop_read_helper(CONNECT, payload, 6, MOSQ_ERR_SUCCESS, PROP_MAXIMUM_PACKET_SIZE, 0x45342312);
}
static void TEST_single_server_keep_alive(void)
@ -640,7 +638,7 @@ static void TEST_single_server_keep_alive(void)
payload[2] = 0x45;
payload[3] = 0x34;
int16_prop_read_helper(payload, 4, MOSQ_ERR_SUCCESS, PROP_SERVER_KEEP_ALIVE, 0x4534);
int16_prop_read_helper(CONNACK, payload, 4, MOSQ_ERR_SUCCESS, PROP_SERVER_KEEP_ALIVE, 0x4534);
}
static void TEST_single_receive_maximum(void)
@ -653,7 +651,7 @@ static void TEST_single_receive_maximum(void)
payload[2] = 0x68;
payload[3] = 0x42;
int16_prop_read_helper(payload, 4, MOSQ_ERR_SUCCESS, PROP_RECEIVE_MAXIMUM, 0x6842);
int16_prop_read_helper(CONNACK, payload, 4, MOSQ_ERR_SUCCESS, PROP_RECEIVE_MAXIMUM, 0x6842);
}
static void TEST_single_topic_alias_maximum(void)
@ -666,7 +664,7 @@ static void TEST_single_topic_alias_maximum(void)
payload[2] = 0x68;
payload[3] = 0x42;
int16_prop_read_helper(payload, 4, MOSQ_ERR_SUCCESS, PROP_TOPIC_ALIAS_MAXIMUM, 0x6842);
int16_prop_read_helper(CONNECT, payload, 4, MOSQ_ERR_SUCCESS, PROP_TOPIC_ALIAS_MAXIMUM, 0x6842);
}
static void TEST_single_topic_alias(void)
@ -679,7 +677,7 @@ static void TEST_single_topic_alias(void)
payload[2] = 0x68;
payload[3] = 0x42;
int16_prop_read_helper(payload, 4, MOSQ_ERR_SUCCESS, PROP_TOPIC_ALIAS, 0x6842);
int16_prop_read_helper(PUBLISH, payload, 4, MOSQ_ERR_SUCCESS, PROP_TOPIC_ALIAS, 0x6842);
}
static void TEST_single_content_type(void)
@ -697,7 +695,7 @@ static void TEST_single_content_type(void)
payload[7] = 'l';
payload[8] = 'o';
string_prop_read_helper(payload, 9, MOSQ_ERR_SUCCESS, PROP_CONTENT_TYPE, "hello");
string_prop_read_helper(PUBLISH, payload, 9, MOSQ_ERR_SUCCESS, PROP_CONTENT_TYPE, "hello");
}
static void TEST_single_response_topic(void)
@ -715,7 +713,7 @@ static void TEST_single_response_topic(void)
payload[7] = 'l';
payload[8] = 'o';
string_prop_read_helper(payload, 9, MOSQ_ERR_SUCCESS, PROP_RESPONSE_TOPIC, "hello");
string_prop_read_helper(CMD_WILL, payload, 9, MOSQ_ERR_SUCCESS, PROP_RESPONSE_TOPIC, "hello");
}
static void TEST_single_assigned_client_identifier(void)
@ -733,7 +731,7 @@ static void TEST_single_assigned_client_identifier(void)
payload[7] = 'l';
payload[8] = 'o';
string_prop_read_helper(payload, 9, MOSQ_ERR_SUCCESS, PROP_ASSIGNED_CLIENT_IDENTIFIER, "hello");
string_prop_read_helper(CONNACK, payload, 9, MOSQ_ERR_SUCCESS, PROP_ASSIGNED_CLIENT_IDENTIFIER, "hello");
}
static void TEST_single_authentication_method(void)
@ -751,7 +749,7 @@ static void TEST_single_authentication_method(void)
payload[7] = 'l';
payload[8] = 'o';
string_prop_read_helper(payload, 9, MOSQ_ERR_SUCCESS, PROP_AUTHENTICATION_METHOD, "hello");
string_prop_read_helper(AUTH, payload, 9, MOSQ_ERR_SUCCESS, PROP_AUTHENTICATION_METHOD, "hello");
}
static void TEST_single_response_information(void)
@ -769,7 +767,7 @@ static void TEST_single_response_information(void)
payload[7] = 'l';
payload[8] = 'o';
string_prop_read_helper(payload, 9, MOSQ_ERR_SUCCESS, PROP_RESPONSE_INFO, "hello");
string_prop_read_helper(CONNACK, payload, 9, MOSQ_ERR_SUCCESS, PROP_RESPONSE_INFO, "hello");
}
static void TEST_single_server_reference(void)
@ -787,7 +785,7 @@ static void TEST_single_server_reference(void)
payload[7] = 'l';
payload[8] = 'o';
string_prop_read_helper(payload, 9, MOSQ_ERR_SUCCESS, PROP_SERVER_REFERENCE, "hello");
string_prop_read_helper(CONNACK, payload, 9, MOSQ_ERR_SUCCESS, PROP_SERVER_REFERENCE, "hello");
}
static void TEST_single_reason_string(void)
@ -805,7 +803,7 @@ static void TEST_single_reason_string(void)
payload[7] = 'l';
payload[8] = 'o';
string_prop_read_helper(payload, 9, MOSQ_ERR_SUCCESS, PROP_REASON_STRING, "hello");
string_prop_read_helper(PUBCOMP, payload, 9, MOSQ_ERR_SUCCESS, PROP_REASON_STRING, "hello");
}
static void TEST_single_correlation_data(void)
@ -823,7 +821,7 @@ static void TEST_single_correlation_data(void)
payload[7] = 'l';
payload[8] = 9;
binary_prop_read_helper(payload, 9, MOSQ_ERR_SUCCESS, PROP_CORRELATION_DATA, &payload[4], 5);
binary_prop_read_helper(PUBLISH, payload, 9, MOSQ_ERR_SUCCESS, PROP_CORRELATION_DATA, &payload[4], 5);
}
static void TEST_single_authentication_data(void)
@ -841,7 +839,7 @@ static void TEST_single_authentication_data(void)
payload[7] = 'l';
payload[8] = 9;
binary_prop_read_helper(payload, 9, MOSQ_ERR_SUCCESS, PROP_AUTHENTICATION_DATA, &payload[4], 5);
binary_prop_read_helper(CONNECT, payload, 9, MOSQ_ERR_SUCCESS, PROP_AUTHENTICATION_DATA, &payload[4], 5);
}
static void TEST_single_user_property(void)
@ -926,82 +924,82 @@ static void TEST_single_subscription_identifier(void)
static void TEST_duplicate_payload_format_indicator(void)
{
duplicate_byte_helper(PROP_PAYLOAD_FORMAT_INDICATOR);
duplicate_byte_helper(PUBLISH, PROP_PAYLOAD_FORMAT_INDICATOR);
}
static void TEST_duplicate_request_problem_information(void)
{
duplicate_byte_helper(PROP_REQUEST_PROBLEM_INFO);
duplicate_byte_helper(CONNECT, PROP_REQUEST_PROBLEM_INFO);
}
static void TEST_duplicate_request_response_information(void)
{
duplicate_byte_helper(PROP_REQUEST_RESPONSE_INFO);
duplicate_byte_helper(CONNECT, PROP_REQUEST_RESPONSE_INFO);
}
static void TEST_duplicate_maximum_qos(void)
{
duplicate_byte_helper(PROP_MAXIMUM_QOS);
duplicate_byte_helper(CONNACK, PROP_MAXIMUM_QOS);
}
static void TEST_duplicate_retain_available(void)
{
duplicate_byte_helper(PROP_RETAIN_AVAILABLE);
duplicate_byte_helper(CONNACK, PROP_RETAIN_AVAILABLE);
}
static void TEST_duplicate_wildcard_subscription_available(void)
{
duplicate_byte_helper(PROP_WILDCARD_SUB_AVAILABLE);
duplicate_byte_helper(CONNACK, PROP_WILDCARD_SUB_AVAILABLE);
}
static void TEST_duplicate_subscription_identifier_available(void)
{
duplicate_byte_helper(PROP_SUBSCRIPTION_ID_AVAILABLE);
duplicate_byte_helper(CONNACK, PROP_SUBSCRIPTION_ID_AVAILABLE);
}
static void TEST_duplicate_shared_subscription_available(void)
{
duplicate_byte_helper(PROP_SHARED_SUB_AVAILABLE);
duplicate_byte_helper(CONNACK, PROP_SHARED_SUB_AVAILABLE);
}
static void TEST_duplicate_message_expiry_interval(void)
{
duplicate_int32_helper(PROP_MESSAGE_EXPIRY_INTERVAL);
duplicate_int32_helper(PUBLISH, PROP_MESSAGE_EXPIRY_INTERVAL);
}
static void TEST_duplicate_session_expiry_interval(void)
{
duplicate_int32_helper(PROP_SESSION_EXPIRY_INTERVAL);
duplicate_int32_helper(DISCONNECT, PROP_SESSION_EXPIRY_INTERVAL);
}
static void TEST_duplicate_will_delay_interval(void)
{
duplicate_int32_helper(PROP_WILL_DELAY_INTERVAL);
duplicate_int32_helper(CMD_WILL, PROP_WILL_DELAY_INTERVAL);
}
static void TEST_duplicate_maximum_packet_size(void)
{
duplicate_int32_helper(PROP_MAXIMUM_PACKET_SIZE);
duplicate_int32_helper(CONNECT, PROP_MAXIMUM_PACKET_SIZE);
}
static void TEST_duplicate_server_keep_alive(void)
{
duplicate_int16_helper(PROP_SERVER_KEEP_ALIVE);
duplicate_int16_helper(CONNACK, PROP_SERVER_KEEP_ALIVE);
}
static void TEST_duplicate_receive_maximum(void)
{
duplicate_int16_helper(PROP_RECEIVE_MAXIMUM);
duplicate_int16_helper(CONNACK, PROP_RECEIVE_MAXIMUM);
}
static void TEST_duplicate_topic_alias_maximum(void)
{
duplicate_int16_helper(PROP_TOPIC_ALIAS_MAXIMUM);
duplicate_int16_helper(CONNECT, PROP_TOPIC_ALIAS_MAXIMUM);
}
static void TEST_duplicate_topic_alias(void)
{
duplicate_int16_helper(PROP_TOPIC_ALIAS);
duplicate_int16_helper(PUBLISH, PROP_TOPIC_ALIAS);
}
static void TEST_duplicate_content_type(void)
@ -1041,12 +1039,12 @@ static void TEST_duplicate_reason_string(void)
static void TEST_duplicate_correlation_data(void)
{
duplicate_binary_helper(PROP_CORRELATION_DATA);
duplicate_binary_helper(PUBLISH, PROP_CORRELATION_DATA);
}
static void TEST_duplicate_authentication_data(void)
{
duplicate_binary_helper(PROP_AUTHENTICATION_DATA);
duplicate_binary_helper(CONNACK, PROP_AUTHENTICATION_DATA);
}
static void TEST_duplicate_user_property(void)
@ -1098,37 +1096,37 @@ static void TEST_duplicate_subscription_identifier(void)
static void TEST_bad_request_problem_information(void)
{
bad_byte_helper(PROP_REQUEST_PROBLEM_INFO);
bad_byte_helper(CONNECT, PROP_REQUEST_PROBLEM_INFO);
}
static void TEST_bad_request_response_information(void)
{
bad_byte_helper(PROP_REQUEST_RESPONSE_INFO);
bad_byte_helper(CONNECT, PROP_REQUEST_RESPONSE_INFO);
}
static void TEST_bad_maximum_qos(void)
{
bad_byte_helper(PROP_MAXIMUM_QOS);
bad_byte_helper(CONNACK, PROP_MAXIMUM_QOS);
}
static void TEST_bad_retain_available(void)
{
bad_byte_helper(PROP_RETAIN_AVAILABLE);
bad_byte_helper(CONNACK, PROP_RETAIN_AVAILABLE);
}
static void TEST_bad_wildcard_sub_available(void)
{
bad_byte_helper(PROP_WILDCARD_SUB_AVAILABLE);
bad_byte_helper(CONNACK, PROP_WILDCARD_SUB_AVAILABLE);
}
static void TEST_bad_subscription_id_available(void)
{
bad_byte_helper(PROP_SUBSCRIPTION_ID_AVAILABLE);
bad_byte_helper(CONNACK, PROP_SUBSCRIPTION_ID_AVAILABLE);
}
static void TEST_bad_shared_sub_available(void)
{
bad_byte_helper(PROP_SHARED_SUB_AVAILABLE);
bad_byte_helper(CONNACK, PROP_SHARED_SUB_AVAILABLE);
}
static void TEST_bad_maximum_packet_size(void)
@ -1143,7 +1141,7 @@ static void TEST_bad_maximum_packet_size(void)
payload[4] = 0;
payload[5] = 0; /* 0 is invalid */
int32_prop_read_helper(payload, 6, MOSQ_ERR_PROTOCOL, PROP_MAXIMUM_PACKET_SIZE, 0);
int32_prop_read_helper(CONNACK, payload, 6, MOSQ_ERR_PROTOCOL, PROP_MAXIMUM_PACKET_SIZE, 0);
}
static void TEST_bad_receive_maximum(void)
@ -1156,7 +1154,7 @@ static void TEST_bad_receive_maximum(void)
payload[2] = 0;
payload[3] = 0; /* 0 is invalid */
int32_prop_read_helper(payload, 4, MOSQ_ERR_PROTOCOL, PROP_RECEIVE_MAXIMUM, 0);
int32_prop_read_helper(CONNECT, payload, 4, MOSQ_ERR_PROTOCOL, PROP_RECEIVE_MAXIMUM, 0);
}
static void TEST_bad_topic_alias(void)
@ -1169,7 +1167,7 @@ static void TEST_bad_topic_alias(void)
payload[2] = 0;
payload[3] = 0; /* 0 is invalid */
int32_prop_read_helper(payload, 4, MOSQ_ERR_PROTOCOL, PROP_TOPIC_ALIAS, 0);
int32_prop_read_helper(PUBLISH, payload, 4, MOSQ_ERR_PROTOCOL, PROP_TOPIC_ALIAS, 0);
}
static void TEST_bad_content_type(void)
@ -1219,7 +1217,7 @@ static void TEST_packet_connect(void)
memset(&packet, 0, sizeof(struct mosquitto__packet));
packet.payload = payload;
packet.remaining_length = sizeof(payload);;
rc = property__read_all(&packet, &properties);
rc = property__read_all(CONNECT, &packet, &properties);
CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS);
CU_ASSERT_PTR_NOT_NULL(properties->next);
@ -1308,7 +1306,7 @@ static void TEST_packet_connack(void)
memset(&packet, 0, sizeof(struct mosquitto__packet));
packet.payload = payload;
packet.remaining_length = sizeof(payload);;
rc = property__read_all(&packet, &properties);
rc = property__read_all(CONNACK, &packet, &properties);
CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS);
CU_ASSERT_PTR_NOT_NULL(properties->next);
@ -1432,7 +1430,7 @@ static void TEST_packet_publish(void)
memset(&packet, 0, sizeof(struct mosquitto__packet));
packet.payload = payload;
packet.remaining_length = sizeof(payload);;
rc = property__read_all(&packet, &properties);
rc = property__read_all(PUBLISH, &packet, &properties);
CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS);
CU_ASSERT_PTR_NOT_NULL(properties->next);
@ -1489,22 +1487,22 @@ static void TEST_packet_publish(void)
static void TEST_packet_puback(void)
{
packet_helper_reason_string_user_property();
packet_helper_reason_string_user_property(PUBACK);
}
static void TEST_packet_pubrec(void)
{
packet_helper_reason_string_user_property();
packet_helper_reason_string_user_property(PUBREC);
}
static void TEST_packet_pubrel(void)
{
packet_helper_reason_string_user_property();
packet_helper_reason_string_user_property(PUBREL);
}
static void TEST_packet_pubcomp(void)
{
packet_helper_reason_string_user_property();
packet_helper_reason_string_user_property(PUBCOMP);
}
static void TEST_packet_subscribe(void)
@ -1522,7 +1520,7 @@ static void TEST_packet_subscribe(void)
memset(&packet, 0, sizeof(struct mosquitto__packet));
packet.payload = payload;
packet.remaining_length = sizeof(payload);;
rc = property__read_all(&packet, &properties);
rc = property__read_all(SUBSCRIBE, &packet, &properties);
CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS);
CU_ASSERT_PTR_NOT_NULL(properties->next);
@ -1545,7 +1543,7 @@ static void TEST_packet_subscribe(void)
static void TEST_packet_suback(void)
{
packet_helper_reason_string_user_property();
packet_helper_reason_string_user_property(SUBACK);
}
static void TEST_packet_unsubscribe(void)
@ -1562,7 +1560,7 @@ static void TEST_packet_unsubscribe(void)
memset(&packet, 0, sizeof(struct mosquitto__packet));
packet.payload = payload;
packet.remaining_length = sizeof(payload);;
rc = property__read_all(&packet, &properties);
rc = property__read_all(UNSUBSCRIBE, &packet, &properties);
CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS);
p = properties;
@ -1579,7 +1577,7 @@ static void TEST_packet_unsubscribe(void)
static void TEST_packet_unsuback(void)
{
packet_helper_reason_string_user_property();
packet_helper_reason_string_user_property(UNSUBACK);
}
static void TEST_packet_disconnect(void)
@ -1598,7 +1596,7 @@ static void TEST_packet_disconnect(void)
memset(&packet, 0, sizeof(struct mosquitto__packet));
packet.payload = payload;
packet.remaining_length = sizeof(payload);;
rc = property__read_all(&packet, &properties);
rc = property__read_all(DISCONNECT, &packet, &properties);
CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS);
CU_ASSERT_PTR_NOT_NULL(properties->next);
@ -1642,7 +1640,7 @@ static void TEST_packet_auth(void)
memset(&packet, 0, sizeof(struct mosquitto__packet));
packet.payload = payload;
packet.remaining_length = sizeof(payload);;
rc = property__read_all(&packet, &properties);
rc = property__read_all(AUTH, &packet, &properties);
CU_ASSERT_EQUAL(rc, MOSQ_ERR_SUCCESS);
CU_ASSERT_PTR_NOT_NULL(properties->next);

@ -6,6 +6,7 @@
#include "packet_mosq.h"
static void byte_prop_write_helper(
int command,
int remaining_length,
int rc_expected,
int identifier,
@ -29,7 +30,7 @@ static void byte_prop_write_helper(
property__write_all(&packet, &property);
packet.pos = 0;
rc = property__read_all(&packet, &properties);
rc = property__read_all(command, &packet, &properties);
CU_ASSERT_EQUAL(rc, rc_expected);
CU_ASSERT_EQUAL(packet.pos, remaining_length);
@ -45,6 +46,7 @@ static void byte_prop_write_helper(
static void int32_prop_write_helper(
int command,
int remaining_length,
int rc_expected,
int identifier,
@ -68,7 +70,7 @@ static void int32_prop_write_helper(
property__write_all(&packet, &property);
packet.pos = 0;
rc = property__read_all(&packet, &properties);
rc = property__read_all(command, &packet, &properties);
CU_ASSERT_EQUAL(rc, rc_expected);
CU_ASSERT_EQUAL(packet.pos, remaining_length);
@ -84,6 +86,7 @@ static void int32_prop_write_helper(
static void int16_prop_write_helper(
int command,
int remaining_length,
int rc_expected,
int identifier,
@ -107,7 +110,7 @@ static void int16_prop_write_helper(
property__write_all(&packet, &property);
packet.pos = 0;
rc = property__read_all(&packet, &properties);
rc = property__read_all(command, &packet, &properties);
CU_ASSERT_EQUAL(rc, rc_expected);
CU_ASSERT_EQUAL(packet.pos, remaining_length);
@ -122,6 +125,7 @@ static void int16_prop_write_helper(
}
static void string_prop_write_helper(
int command,
int remaining_length,
int rc_expected,
int identifier,
@ -146,7 +150,7 @@ static void string_prop_write_helper(
property__write_all(&packet, &property);
packet.pos = 0;
rc = property__read_all(&packet, &properties);
rc = property__read_all(command, &packet, &properties);
CU_ASSERT_EQUAL(rc, rc_expected);
CU_ASSERT_EQUAL(packet.pos, remaining_length);
@ -164,6 +168,7 @@ static void string_prop_write_helper(
static void binary_prop_write_helper(
int command,
int remaining_length,
int rc_expected,
int identifier,
@ -190,7 +195,7 @@ static void binary_prop_write_helper(
property__write_all(&packet, &property);
packet.pos = 0;
rc = property__read_all(&packet, &properties);
rc = property__read_all(command, &packet, &properties);
CU_ASSERT_EQUAL(rc, rc_expected);
CU_ASSERT_EQUAL(packet.pos, remaining_length);
@ -235,7 +240,7 @@ static void string_pair_prop_write_helper(
property__write_all(&packet, &property);
packet.pos = 0;
rc = property__read_all(&packet, &properties);
rc = property__read_all(CONNECT, &packet, &properties);
CU_ASSERT_EQUAL(rc, rc_expected);
CU_ASSERT_EQUAL(packet.pos, remaining_length);
@ -282,7 +287,7 @@ static void varint_prop_write_helper(
property__write_all(&packet, &property);
packet.pos = 0;
rc = property__read_all(&packet, &properties);
rc = property__read_all(PUBLISH, &packet, &properties);
CU_ASSERT_EQUAL(rc, rc_expected);
if(properties){
@ -333,131 +338,131 @@ static void TEST_bad_identifier(void)
static void TEST_single_payload_format_indicator(void)
{
byte_prop_write_helper(3, MOSQ_ERR_SUCCESS, PROP_PAYLOAD_FORMAT_INDICATOR, 1);
byte_prop_write_helper(PUBLISH, 3, MOSQ_ERR_SUCCESS, PROP_PAYLOAD_FORMAT_INDICATOR, 1);
}
static void TEST_single_request_problem_information(void)
{
byte_prop_write_helper(3, MOSQ_ERR_SUCCESS, PROP_REQUEST_PROBLEM_INFO, 1);
byte_prop_write_helper(CONNECT, 3, MOSQ_ERR_SUCCESS, PROP_REQUEST_PROBLEM_INFO, 1);
}
static void TEST_single_request_response_information(void)
{
byte_prop_write_helper(3, MOSQ_ERR_SUCCESS, PROP_REQUEST_RESPONSE_INFO, 1);
byte_prop_write_helper(CONNECT, 3, MOSQ_ERR_SUCCESS, PROP_REQUEST_RESPONSE_INFO, 1);
}
static void TEST_single_maximum_qos(void)
{
byte_prop_write_helper(3, MOSQ_ERR_SUCCESS, PROP_MAXIMUM_QOS, 1);
byte_prop_write_helper(CONNACK, 3, MOSQ_ERR_SUCCESS, PROP_MAXIMUM_QOS, 1);
}
static void TEST_single_retain_available(void)
{
byte_prop_write_helper(3, MOSQ_ERR_SUCCESS, PROP_RETAIN_AVAILABLE, 1);
byte_prop_write_helper(CONNACK, 3, MOSQ_ERR_SUCCESS, PROP_RETAIN_AVAILABLE, 1);
}
static void TEST_single_wildcard_subscription_available(void)
{
byte_prop_write_helper(3, MOSQ_ERR_SUCCESS, PROP_WILDCARD_SUB_AVAILABLE, 0);
byte_prop_write_helper(CONNACK, 3, MOSQ_ERR_SUCCESS, PROP_WILDCARD_SUB_AVAILABLE, 0);
}
static void TEST_single_subscription_identifier_available(void)
{
byte_prop_write_helper(3, MOSQ_ERR_SUCCESS, PROP_SUBSCRIPTION_ID_AVAILABLE, 0);
byte_prop_write_helper(CONNACK, 3, MOSQ_ERR_SUCCESS, PROP_SUBSCRIPTION_ID_AVAILABLE, 0);
}
static void TEST_single_shared_subscription_available(void)
{
byte_prop_write_helper(3, MOSQ_ERR_SUCCESS, PROP_SHARED_SUB_AVAILABLE, 1);
byte_prop_write_helper(CONNACK, 3, MOSQ_ERR_SUCCESS, PROP_SHARED_SUB_AVAILABLE, 1);
}
static void TEST_single_message_expiry_interval(void)
{
int32_prop_write_helper(6, MOSQ_ERR_SUCCESS, PROP_MESSAGE_EXPIRY_INTERVAL, 0x12233445);
int32_prop_write_helper(PUBLISH, 6, MOSQ_ERR_SUCCESS, PROP_MESSAGE_EXPIRY_INTERVAL, 0x12233445);
}
static void TEST_single_session_expiry_interval(void)
{
int32_prop_write_helper(6, MOSQ_ERR_SUCCESS, PROP_SESSION_EXPIRY_INTERVAL, 0x45342312);
int32_prop_write_helper(CONNACK, 6, MOSQ_ERR_SUCCESS, PROP_SESSION_EXPIRY_INTERVAL, 0x45342312);
}
static void TEST_single_will_delay_interval(void)
{
int32_prop_write_helper(6, MOSQ_ERR_SUCCESS, PROP_WILL_DELAY_INTERVAL, 0x45342312);
int32_prop_write_helper(CMD_WILL, 6, MOSQ_ERR_SUCCESS, PROP_WILL_DELAY_INTERVAL, 0x45342312);
}
static void TEST_single_maximum_packet_size(void)
{
int32_prop_write_helper(6, MOSQ_ERR_SUCCESS, PROP_MAXIMUM_PACKET_SIZE, 0x45342312);
int32_prop_write_helper(CONNECT, 6, MOSQ_ERR_SUCCESS, PROP_MAXIMUM_PACKET_SIZE, 0x45342312);
}
static void TEST_single_server_keep_alive(void)
{
int16_prop_write_helper(4, MOSQ_ERR_SUCCESS, PROP_SERVER_KEEP_ALIVE, 0x4534);
int16_prop_write_helper(CONNACK, 4, MOSQ_ERR_SUCCESS, PROP_SERVER_KEEP_ALIVE, 0x4534);
}
static void TEST_single_receive_maximum(void)
{
int16_prop_write_helper(4, MOSQ_ERR_SUCCESS, PROP_RECEIVE_MAXIMUM, 0x6842);
int16_prop_write_helper(CONNACK, 4, MOSQ_ERR_SUCCESS, PROP_RECEIVE_MAXIMUM, 0x6842);
}
static void TEST_single_topic_alias_maximum(void)
{
int16_prop_write_helper(4, MOSQ_ERR_SUCCESS, PROP_TOPIC_ALIAS_MAXIMUM, 0x6842);
int16_prop_write_helper(CONNECT, 4, MOSQ_ERR_SUCCESS, PROP_TOPIC_ALIAS_MAXIMUM, 0x6842);
}
static void TEST_single_topic_alias(void)
{
int16_prop_write_helper(4, MOSQ_ERR_SUCCESS, PROP_TOPIC_ALIAS, 0x6842);
int16_prop_write_helper(PUBLISH, 4, MOSQ_ERR_SUCCESS, PROP_TOPIC_ALIAS, 0x6842);
}
static void TEST_single_content_type(void)
{
string_prop_write_helper(9, MOSQ_ERR_SUCCESS, PROP_CONTENT_TYPE, "hello");
string_prop_write_helper(PUBLISH, 9, MOSQ_ERR_SUCCESS, PROP_CONTENT_TYPE, "hello");
}
static void TEST_single_response_topic(void)
{
string_prop_write_helper(9, MOSQ_ERR_SUCCESS, PROP_RESPONSE_TOPIC, "hello");
string_prop_write_helper(CMD_WILL, 9, MOSQ_ERR_SUCCESS, PROP_RESPONSE_TOPIC, "hello");
}
static void TEST_single_assigned_client_identifier(void)
{
string_prop_write_helper(9, MOSQ_ERR_SUCCESS, PROP_ASSIGNED_CLIENT_IDENTIFIER, "hello");
string_prop_write_helper(CONNACK, 9, MOSQ_ERR_SUCCESS, PROP_ASSIGNED_CLIENT_IDENTIFIER, "hello");
}
static void TEST_single_authentication_method(void)
{
string_prop_write_helper(9, MOSQ_ERR_SUCCESS, PROP_AUTHENTICATION_METHOD, "hello");
string_prop_write_helper(CONNECT, 9, MOSQ_ERR_SUCCESS, PROP_AUTHENTICATION_METHOD, "hello");
}
static void TEST_single_response_information(void)
{
string_prop_write_helper(9, MOSQ_ERR_SUCCESS, PROP_RESPONSE_INFO, "hello");
string_prop_write_helper(CONNACK, 9, MOSQ_ERR_SUCCESS, PROP_RESPONSE_INFO, "hello");
}
static void TEST_single_server_reference(void)
{
string_prop_write_helper(9, MOSQ_ERR_SUCCESS, PROP_SERVER_REFERENCE, "hello");
string_prop_write_helper(CONNACK, 9, MOSQ_ERR_SUCCESS, PROP_SERVER_REFERENCE, "hello");
}
static void TEST_single_reason_string(void)
{
string_prop_write_helper(9, MOSQ_ERR_SUCCESS, PROP_REASON_STRING, "hello");
string_prop_write_helper(PUBREC, 9, MOSQ_ERR_SUCCESS, PROP_REASON_STRING, "hello");
}
static void TEST_single_correlation_data(void)
{
uint8_t payload[5] = {1, 'e', 0, 'l', 9};
binary_prop_write_helper(9, MOSQ_ERR_SUCCESS, PROP_CORRELATION_DATA, payload, 5);
binary_prop_write_helper(PUBLISH, 9, MOSQ_ERR_SUCCESS, PROP_CORRELATION_DATA, payload, 5);
}
static void TEST_single_authentication_data(void)
{
uint8_t payload[5] = {1, 'e', 0, 'l', 9};
binary_prop_write_helper(9, MOSQ_ERR_SUCCESS, PROP_AUTHENTICATION_DATA, payload, 5);
binary_prop_write_helper(CONNECT, 9, MOSQ_ERR_SUCCESS, PROP_AUTHENTICATION_DATA, payload, 5);
}
static void TEST_single_user_property(void)

Loading…
Cancel
Save