Fixed I-Am-Router-To-Network handling in cases of a malformed packet. The packet seen in the field was a I-Am-Router-To-Network but there was an extra "Data" byte of 0x55 at the end. Thank you, Ettore.
This commit is contained in:
@@ -111,12 +111,12 @@ static void network_control_handler(
|
|||||||
debug_printf("%s for Networks: ",
|
debug_printf("%s for Networks: ",
|
||||||
bactext_network_layer_msg_name
|
bactext_network_layer_msg_name
|
||||||
(NETWORK_MESSAGE_I_AM_ROUTER_TO_NETWORK));
|
(NETWORK_MESSAGE_I_AM_ROUTER_TO_NETWORK));
|
||||||
while (npdu_len) {
|
while (npdu_len >= 2) {
|
||||||
len = decode_unsigned16(&npdu[npdu_offset], &dnet);
|
len = decode_unsigned16(&npdu[npdu_offset], &dnet);
|
||||||
debug_printf("%hu", dnet);
|
debug_printf("%hu", dnet);
|
||||||
npdu_len -= len;
|
npdu_len -= len;
|
||||||
npdu_offset += len;
|
npdu_offset += len;
|
||||||
if (npdu_len) {
|
if (npdu_len >= 2) {
|
||||||
debug_printf(", ");
|
debug_printf(", ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -108,16 +108,19 @@ static void My_Router_Handler(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
printf("\nNetworks: ");
|
printf("\nNetworks: ");
|
||||||
while (npdu_len) {
|
while (npdu_len >= 2) {
|
||||||
len = decode_unsigned16(&npdu[npdu_offset], &dnet);
|
len = decode_unsigned16(&npdu[npdu_offset], &dnet);
|
||||||
printf("%hu", dnet);
|
printf("%hu", dnet);
|
||||||
npdu_len -= len;
|
npdu_len -= len;
|
||||||
npdu_offset += len;
|
npdu_offset += len;
|
||||||
if (npdu_len) {
|
if (npdu_len >= 2) {
|
||||||
printf(", ");
|
printf(", ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
if (npdu_len) {
|
||||||
|
printf("Warning! Extra byte received!\n");
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case NETWORK_MESSAGE_I_COULD_BE_ROUTER_TO_NETWORK:
|
case NETWORK_MESSAGE_I_COULD_BE_ROUTER_TO_NETWORK:
|
||||||
case NETWORK_MESSAGE_REJECT_MESSAGE_TO_NETWORK:
|
case NETWORK_MESSAGE_REJECT_MESSAGE_TO_NETWORK:
|
||||||
|
|||||||
Reference in New Issue
Block a user