When destination IP address does not suffice to uniquely identify
the Modbus/TCP device.
Some Modbus/TCP devices act as gateways to other Modbus/TCP devices
that are behind this gateways.
To be able to add a transaction counter we will need a ThreadVars
in the AppLayerParserParse function.
This function is massively used in unittests
and this result in an long commit.
Modbus parser does not check length to extract/read data (read or write address,
quantity of data, etc.) that should be present.
In case of malformated data (invalid length in header), Modbus parser reads data
over the input data length.
Add check before extracting/reading data from input buffer to avoid head buffer
overflow.