|
|
|
|
@ -107,6 +107,7 @@ SCEnumCharMap dnp3_decoder_event_table[] = {
|
|
|
|
|
{ "UNKNOWN_OBJECT", DNP3_DECODER_EVENT_UNKNOWN_OBJECT },
|
|
|
|
|
{ "TOO_MANY_POINTS", DNP3_DECODER_EVENT_TOO_MANY_POINTS },
|
|
|
|
|
{ "TOO_MANY_OBJECTS", DNP3_DECODER_EVENT_TOO_MANY_OBJECTS },
|
|
|
|
|
{ "TOO_LONG_REASSEMBLY", DNP3_DECODER_EVENT_TOO_LONG_REASS },
|
|
|
|
|
{ NULL, -1 },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
@ -941,6 +942,13 @@ static void DNP3HandleUserDataRequest(
|
|
|
|
|
tx->done = 1;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
// a data link frame has its size on one byte,
|
|
|
|
|
// and transport layer has sequence in 0-63
|
|
|
|
|
if (tx->buffer_len > 63 * 0xff) {
|
|
|
|
|
DNP3SetEvent(dnp3, DNP3_DECODER_EVENT_TOO_LONG_REASS);
|
|
|
|
|
tx->done = 1;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* If this is not the final segment, just return. */
|
|
|
|
|
if (!DNP3_TH_FIN(th)) {
|
|
|
|
|
|