diff options
author | Sverker Eriksson <[email protected]> | 2015-12-11 14:40:21 +0100 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2015-12-11 14:40:21 +0100 |
commit | 63ea41015e6aa28415c3446b8dee5d5208cdeb85 (patch) | |
tree | b3f357242217954115cd332a8afe953e6516d863 | |
parent | 04f97abf89d39d8126c432341600268338ea5567 (diff) | |
parent | efa7a08d1b16aeb280c87f035a97d31ca6eebba6 (diff) | |
download | otp-63ea41015e6aa28415c3446b8dee5d5208cdeb85.tar.gz otp-63ea41015e6aa28415c3446b8dee5d5208cdeb85.tar.bz2 otp-63ea41015e6aa28415c3446b8dee5d5208cdeb85.zip |
Merge branch 'sverk/dist-ctrl-msg-overflow' into maint
* sverk/dist-ctrl-msg-overflow:
erts: Fix faulty cleanup when receiving broken dist msg
-rw-r--r-- | erts/emulator/beam/dist.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/erts/emulator/beam/dist.c b/erts/emulator/beam/dist.c index 170690ca89..7be2b77a3b 100644 --- a/erts/emulator/beam/dist.c +++ b/erts/emulator/beam/dist.c @@ -1231,11 +1231,11 @@ int erts_net_message(Port *prt, arg = erts_decode_dist_ext(&factory, &ede); if (is_non_value(arg)) { #ifdef ERTS_DIST_MSG_DBG - erts_fprintf(stderr, "DIST MSG DEBUG: erts_dist_ext_size(CTL) failed:\n"); + erts_fprintf(stderr, "DIST MSG DEBUG: erts_decode_dist_ext(CTL) failed:\n"); bw(buf, orig_len); #endif PURIFY_MSG("data error"); - goto data_error; + goto decode_error; } ctl_len = t - buf; @@ -1728,12 +1728,13 @@ int erts_net_message(Port *prt, erts_dsprintf(dsbufp, "Invalid distribution message: %.200T", arg); erts_send_error_to_logger_nogl(dsbufp); } - data_error: +decode_error: PURIFY_MSG("data error"); erts_factory_close(&factory); if (ctl != ctl_default) { erts_free(ERTS_ALC_T_DCTRL_BUF, (void *) ctl); } +data_error: UnUseTmpHeapNoproc(DIST_CTL_DEFAULT_SIZE); erts_deliver_port_exit(prt, dep->cid, am_killed, 0); ERTS_SMP_CHK_NO_PROC_LOCKS; |