-
Thanks to @lipengin1975 for reporting this issue. Signed-off-by: Michael Heimpold <mhei@heimpold.de>
-
According to the Modbus specification (http://www.modbus.org/docs/Modbus_over_serial_line_V1_02.pdf, section 2.1) a Modbus RTU master can send a broadcast to all of it's slaves. This broadcasts can only be write requests as otherwise collisions could occur, eg. on a RS-485 bus. When receiving such a broadcast, the slave should process the request as usual, but must not reply anything, neither a normal response nor an exception reply in case of an error. Adjust the unit test for this case, too. Signed-off-by: Michael Heimpold <mhei@heimpold.de>
-
Do not allow raw request length longer than the PDU size plus the additional requested slave address byte. Without this check modbus_send_raw_request could be used to trigger a buffer overflow on the stack since the parameter is passed unchecked to memcpy. Thanks to Hanno Neuer for spotting this security flaw. Signed-off-by: Michael Heimpold <mhei@heimpold.de>
-
Signed-off-by: Michael Heimpold <mhei@heimpold.de>
-
This replaces the lengthy license text headers with a short and standardized license tag. See http://spdx.org for details. This is useful e.g. for license compliance tools which scan through files and generate a report of the licenses used in a project. Signed-off-by: Michael Heimpold <mhei@heimpold.de>
-
This change has introduced by 83c34102. Fix unit tests on some systems.
-
Function modbus_receive_from has no implementation in the library and is not used anywhere.
-
Protects against crafted write requests with a large quantity but a small byte count. If address + quantity was in the mapping space of the server and quantity greater than the response size, it was possible to crash the server. The sleep/flush sequence improves the handling of following requests.
-
Thank you Petr Gladkiy and MarjanTomas. Sorry for the delay...
-
From Michael Heimpold: Just a nitpick: the INADDR_* macros are defined in host byte order, compare INADDR_LOOPBACK. So it would be reasonable to wrap this with htonl(INADDR_ANY). However, every experienced socket programmer should know that INADDR_ANY equals 0.0.0.0, passing it through htonl does not have any effect.
-
- protect against NULL IP address BTW - update documentation
-
- allow an empty string or NULL for node argument - protect against NULL in service argument - new test for NULL service - update documentation
-
Thanks to Marjan Tomas
-
Change API of function for libmodbus v3.2.0
-
Thanks to Perry Kundert for bug report and initial patches.
-
- add byte timeout tests (TCP backend only) - update and improve documentation - long timeout values are now uint32_t so it changes the API to disable byte timeout
-
Thank you AlexMaz.
-
https://www.securecoding.cert.org/confluence/display/seccode/DCL37-C.+Do+not+declare+or+define+a+reserved+identifier Not applied to libmodbus constants for now...