-
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>
-
Signed-off-by: Michael Heimpold <mhei@heimpold.de>
-
This patch has been developed by Andrey Skvortsov, Michael Heimpold and Stéphane Raimbault. - avoid bash'isms and use of GNU find - terminate server after test run (ignored in TCP mode) - add *.log, *.trs to .gitignore - unit-test-client returns 0 on success - save exit code of unit-test-client for make check status - replace kill by killall - add entry in README
-
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>
-
Michael signed the CLA of the project.
-
Hannu signed the CLA of the project.
-
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>
-
They are already included in these Linux distributions.
-
- only check if documentation tools are installed in acinclude.m4 - don't provide built documentation in dist tarball - simpler Makefile - display warning message and check result
-
The response timeout of the client must be higher than the server to handle sleep/flush operations done on server side.
-
This change has introduced by 83c34102. Fix unit tests on some systems.
-
This fixes the message "error: 'for' loop initial declarations are only allowed in C99 mode", spotted during cross-compiling of libmodbus. The compiler (gcc) actually does support -std=c99 but it gets not enabled by default. So a solution would be to enforce c99 mode via CFLAGS, but this will knock out all compilers which do not support this mode. Moving the declaration out of the loop initialisation, seems to be the simpler solution. Signed-off-by: Michael Heimpold <mhei@heimpold.de>
-
Function modbus_receive_from has no implementation in the library and is not used anywhere.
-
It concerns only the files in 'tests' directory.
-
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 MarjanTomas and SwissKnife.
-
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