BugFix: MQTTSNDeserialize_XXXX() functions don't return error code when

error occurs.

Do not store the length of packet into rc.

If the packet is incorrect, skip the processing that follows.

Bugfix: Print out the value of TopicId in SUBACK and UNSUBACK. 
 
Signed-off-by: tomoaki <tomoaki@tomy-tech.com>
This commit is contained in:
tomoaki
2017-05-19 09:44:51 +09:00
parent 1b867589e5
commit 5c278f1aec
14 changed files with 64 additions and 43 deletions

View File

@@ -200,7 +200,7 @@ int MQTTSNDeserialize_pingresp(unsigned char* buf, int buflen)
int mylen;
FUNC_ENTRY;
curdata += (rc = MQTTSNPacket_decode(curdata, buflen, &mylen)); /* read length */
curdata += MQTTSNPacket_decode(curdata, buflen, &mylen); /* read length */
enddata = buf + mylen;
if (enddata - curdata < 2)
goto exit;
@@ -428,7 +428,7 @@ int MQTTSNDeserialize_willtopicresp(int* resp_rc, unsigned char* buf, int buflen
int mylen;
FUNC_ENTRY;
curdata += (rc = MQTTSNPacket_decode(curdata, buflen, &mylen)); /* read length */
curdata += MQTTSNPacket_decode(curdata, buflen, &mylen); /* read length */
enddata = buf + mylen;
if (enddata - buf < 3)
goto exit;
@@ -460,7 +460,7 @@ int MQTTSNDeserialize_willmsgresp(int* resp_rc, unsigned char* buf, int buflen)
int mylen;
FUNC_ENTRY;
curdata += (rc = MQTTSNPacket_decode(curdata, buflen, &mylen)); /* read length */
curdata += MQTTSNPacket_decode(curdata, buflen, &mylen); /* read length */
enddata = buf + mylen;
if (enddata - buf < 3)
goto exit;

View File

@@ -110,7 +110,7 @@ int MQTTSNDeserialize_disconnect(int* duration, unsigned char* buf, int buflen)
int mylen;
FUNC_ENTRY;
curdata += (rc = MQTTSNPacket_decode(curdata, buflen, &mylen)); /* read length */
curdata += MQTTSNPacket_decode(curdata, buflen, &mylen); /* read length */
enddata = buf + mylen;
if (enddata - curdata < 1)
goto exit;
@@ -202,7 +202,7 @@ int MQTTSNDeserialize_pingreq(MQTTSNString* clientID, unsigned char* buf, int le
int mylen = 0;
FUNC_ENTRY;
curdata += (rc = MQTTSNPacket_decode(curdata, len, &mylen)); /* read length */
curdata += MQTTSNPacket_decode(curdata, len, &mylen); /* read length */
enddata = buf + mylen;
if (enddata - curdata < 1)
goto exit;
@@ -265,7 +265,7 @@ int MQTTSNDeserialize_willtopic1(int *willQoS, unsigned char *willRetain, MQTTSN
int mylen = 0;
FUNC_ENTRY;
curdata += (rc = MQTTSNPacket_decode(curdata, len, &mylen)); /* read length */
curdata += MQTTSNPacket_decode(curdata, len, &mylen); /* read length */
enddata = buf + mylen;
if (enddata > buf + len)
goto exit;
@@ -327,7 +327,7 @@ int MQTTSNDeserialize_willmsg1(MQTTSNString* willMsg, unsigned char* buf, int le
int mylen = 0;
FUNC_ENTRY;
curdata += (rc = MQTTSNPacket_decode(curdata, len, &mylen)); /* read length */
curdata += MQTTSNPacket_decode(curdata, len, &mylen); /* read length */
enddata = buf + mylen;
if (enddata > buf + len)
goto exit;

View File

@@ -43,7 +43,7 @@ int MQTTSNDeserialize_publish(unsigned char* dup, int* qos, unsigned char* retai
int mylen = 0;
FUNC_ENTRY;
curdata += (rc = MQTTSNPacket_decode(curdata, buflen, &mylen)); /* read length */
curdata += MQTTSNPacket_decode(curdata, buflen, &mylen); /* read length */
enddata = buf + mylen;
if (enddata - curdata > buflen)
goto exit;
@@ -95,7 +95,7 @@ int MQTTSNDeserialize_puback(unsigned short* topicid, unsigned short* packetid,
int mylen = 0;
FUNC_ENTRY;
curdata += (rc = MQTTSNPacket_decode(curdata, buflen, &mylen)); /* read length */
curdata += MQTTSNPacket_decode(curdata, buflen, &mylen); /* read length */
enddata = buf + mylen;
if (enddata - curdata > buflen)
goto exit;
@@ -130,7 +130,7 @@ int MQTTSNDeserialize_ack(unsigned char* type, unsigned short* packetid, unsigne
int mylen = 0;
FUNC_ENTRY;
curdata += (rc = MQTTSNPacket_decode(curdata, buflen, &mylen)); /* read length */
curdata += MQTTSNPacket_decode(curdata, buflen, &mylen); /* read length */
enddata = buf + mylen;
if (enddata - curdata > buflen)
goto exit;
@@ -166,7 +166,7 @@ int MQTTSNDeserialize_register(unsigned short* topicid, unsigned short* packetid
int mylen = 0;
FUNC_ENTRY;
curdata += (rc = MQTTSNPacket_decode(curdata, buflen, &mylen)); /* read length */
curdata += MQTTSNPacket_decode(curdata, buflen, &mylen); /* read length */
enddata = buf + mylen;
if (enddata - curdata > buflen)
goto exit;
@@ -206,7 +206,7 @@ int MQTTSNDeserialize_regack(unsigned short* topicid, unsigned short* packetid,
int mylen = 0;
FUNC_ENTRY;
curdata += (rc = MQTTSNPacket_decode(curdata, buflen, &mylen)); /* read length */
curdata += MQTTSNPacket_decode(curdata, buflen, &mylen); /* read length */
enddata = buf + mylen;
if (enddata - curdata > buflen)
goto exit;

View File

@@ -36,7 +36,7 @@ int MQTTSNDeserialize_advertise(unsigned char* gatewayid, unsigned short* durati
int mylen = 0;
FUNC_ENTRY;
curdata += (rc = MQTTSNPacket_decode(curdata, buflen, &mylen)); /* read length */
curdata += MQTTSNPacket_decode(curdata, buflen, &mylen); /* read length */
enddata = buf + mylen;
if (enddata - curdata > buflen)
goto exit;
@@ -105,7 +105,7 @@ int MQTTSNDeserialize_gwinfo(unsigned char* gatewayid, unsigned short* gatewayad
int mylen = 0;
FUNC_ENTRY;
curdata += (rc = MQTTSNPacket_decode(curdata, buflen, &mylen)); /* read length */
curdata += MQTTSNPacket_decode(curdata, buflen, &mylen); /* read length */
enddata = buf + mylen;
if (enddata - curdata > buflen)
goto exit;

View File

@@ -68,7 +68,7 @@ int MQTTSNDeserialize_searchgw(unsigned char* radius, unsigned char* buf, int bu
int mylen = 0;
FUNC_ENTRY;
curdata += (rc = MQTTSNPacket_decode(curdata, buflen, &mylen)); /* read length */
curdata += MQTTSNPacket_decode(curdata, buflen, &mylen); /* read length */
enddata = buf + mylen;
if (enddata - curdata > buflen)
goto exit;

View File

@@ -115,7 +115,7 @@ int MQTTSNDeserialize_suback(int* qos, unsigned short* topicid, unsigned short*
int mylen = 0;
FUNC_ENTRY;
curdata += (rc = MQTTSNPacket_decode(curdata, buflen, &mylen)); /* read length */
curdata += MQTTSNPacket_decode(curdata, buflen, &mylen); /* read length */
enddata = buf + mylen;
if (enddata - curdata > buflen)
goto exit;

View File

@@ -39,7 +39,7 @@ int MQTTSNDeserialize_subscribe(unsigned char* dup, int* qos, unsigned short* pa
int mylen = 0;
FUNC_ENTRY;
curdata += (rc = MQTTSNPacket_decode(curdata, buflen, &mylen)); /* read length */
curdata += MQTTSNPacket_decode(curdata, buflen, &mylen); /* read length */
enddata = buf + mylen;
if (enddata - curdata > buflen)
goto exit;

View File

@@ -97,7 +97,7 @@ int MQTTSNDeserialize_unsuback(unsigned short* packetid, unsigned char* buf, int
int mylen = 0;
FUNC_ENTRY;
curdata += (rc = MQTTSNPacket_decode(curdata, buflen, &mylen)); /* read length */
curdata += MQTTSNPacket_decode(curdata, buflen, &mylen); /* read length */
enddata = buf + mylen;
if (enddata - curdata > buflen)
goto exit;

View File

@@ -27,7 +27,7 @@ int MQTTSNDeserialize_unsubscribe(unsigned short* packetid, MQTTSN_topicid* topi
int mylen = 0;
FUNC_ENTRY;
curdata += (rc = MQTTSNPacket_decode(curdata, buflen, &mylen)); /* read length */
curdata += MQTTSNPacket_decode(curdata, buflen, &mylen); /* read length */
enddata = buf + mylen;
if (enddata - curdata > buflen)
goto exit;