diff options
author | Henrik Nord <[email protected]> | 2011-04-15 10:38:53 +0200 |
---|---|---|
committer | Henrik Nord <[email protected]> | 2011-04-15 10:39:01 +0200 |
commit | d5df6b32e951ff94672c24188ead76fb9d4c4449 (patch) | |
tree | 41ae155e4a3c0d50129b449450f182f4583a495f | |
parent | 27fc85fe624441a9c5754288aeac510c20a80695 (diff) | |
parent | fa8456a96f099b4aa878b6cea7e3fef0e6da1e63 (diff) | |
download | otp-d5df6b32e951ff94672c24188ead76fb9d4c4449.tar.gz otp-d5df6b32e951ff94672c24188ead76fb9d4c4449.tar.bz2 otp-d5df6b32e951ff94672c24188ead76fb9d4c4449.zip |
Merge branch 'ms/heart-rem-garbage-append' into dev
* ms/heart-rem-garbage-append:
heart: remove garbage appended to heart command
OTP-9224
-rw-r--r-- | erts/etc/common/heart.c | 6 | ||||
-rw-r--r-- | lib/kernel/test/heart_SUITE.erl | 13 |
2 files changed, 14 insertions, 5 deletions
diff --git a/erts/etc/common/heart.c b/erts/etc/common/heart.c index 778b3569c7..7a5746e630 100644 --- a/erts/etc/common/heart.c +++ b/erts/etc/common/heart.c @@ -727,16 +727,16 @@ static int heart_cmd_reply(int fd, char *s) { struct msg m; - int len = strlen(s) + 1; /* Include \0 */ + int len = strlen(s); /* if s >= MSG_BODY_SIZE, return a write * failure immediately. */ - if (len > sizeof(m.fill)) + if (len >= sizeof(m.fill)) return -1; m.op = HEART_CMD; - m.len = htons(len + 2); /* Include Op */ + m.len = htons(len + 1); /* Include Op */ strcpy((char*)m.fill, s); return write_message(fd, &m); diff --git a/lib/kernel/test/heart_SUITE.erl b/lib/kernel/test/heart_SUITE.erl index 043c753cf8..233e438dc9 100644 --- a/lib/kernel/test/heart_SUITE.erl +++ b/lib/kernel/test/heart_SUITE.erl @@ -22,7 +22,7 @@ -export([all/0, suite/0,groups/0,init_per_suite/1, end_per_suite/1, init_per_group/2,end_per_group/2, start/1, restart/1, - reboot/1, set_cmd/1, clear_cmd/1, + reboot/1, set_cmd/1, clear_cmd/1, get_cmd/1, dont_drop/1, kill_pid/1]). -export([init_per_testcase/2, end_per_testcase/2]). @@ -58,7 +58,7 @@ end_per_testcase(_Func, Config) -> suite() -> [{ct_hooks,[ts_install_cth]}]. all() -> - [start, restart, reboot, set_cmd, clear_cmd, kill_pid]. + [start, restart, reboot, set_cmd, clear_cmd, get_cmd, kill_pid]. groups() -> []. @@ -246,6 +246,15 @@ clear_cmd(Config) when is_list(Config) -> end, ok. +get_cmd(suite) -> []; +get_cmd(Config) when is_list(Config) -> + ?line {ok, Node} = start_check(slave, heart_test), + Cmd = "test", + ?line ok = rpc:call(Node, heart, set_cmd, [Cmd]), + ?line {ok, Cmd} = rpc:call(Node, heart, get_cmd, []), + stop_node(Node), + ok. + dont_drop(suite) -> %%% Removed as it may crash epmd/distribution in colourful %%% ways. While we ARE finding out WHY, it would |