*
* \retval 1 if user data exists, otherwise 0.
*/
-static int DNP3HasUserData(const DNP3LinkHeader *header)
+static int DNP3HasUserData(const DNP3LinkHeader *header, uint8_t direction)
{
- if (DNP3_LINK_DIR(header->control)) {
+ if (direction == STREAM_TOSERVER) {
return header->len >= DNP3_LINK_HDR_LEN + sizeof(DNP3TransportHeader) +
sizeof(DNP3ApplicationHeader);
}
/* Make sure the header length is large enough for transport and
* application headers. */
- if (!DNP3HasUserData(header)) {
+ if (!DNP3HasUserData(header, STREAM_TOSERVER)) {
DNP3SetEvent(dnp3, DNP3_DECODER_EVENT_LEN_TOO_SMALL);
goto next;
}
/* Make sure the header length is large enough for transport and
* application headers. */
- if (!DNP3HasUserData(header)) {
+ if (!DNP3HasUserData(header, STREAM_TOCLIENT)) {
DNP3SetEvent(dnp3, DNP3_DECODER_EVENT_LEN_TOO_SMALL);
goto error;
}
const uint8_t flags)
{
SCEnter();
+
DNP3State *dnp3 = (DNP3State *)state;
DNP3Buffer *buffer = &dnp3->response_buffer;
int processed;