diff options
author | Rickard Green <[email protected]> | 2019-04-18 17:41:24 +0200 |
---|---|---|
committer | Rickard Green <[email protected]> | 2019-04-18 17:41:24 +0200 |
commit | e6a69b021bc2aee6aca42bd72583a96d06f4ba9d (patch) | |
tree | 40f44a59587006bd0999a5688674d5d7627f4f8e /erts/emulator/beam/io.c | |
parent | d0d4f2be1ebfe8293a627531b65819e85482c1d9 (diff) | |
parent | f2671c2ef47f8c49cd5fab6e1737ed08d99ea5d2 (diff) | |
download | otp-e6a69b021bc2aee6aca42bd72583a96d06f4ba9d.tar.gz otp-e6a69b021bc2aee6aca42bd72583a96d06f4ba9d.tar.bz2 otp-e6a69b021bc2aee6aca42bd72583a96d06f4ba9d.zip |
Merge branch 'rickard/dist-system-limit/OTP-15708'
* rickard/dist-system-limit/OTP-15708:
Fail when we cannot encode term in binary
Diffstat (limited to 'erts/emulator/beam/io.c')
-rw-r--r-- | erts/emulator/beam/io.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/erts/emulator/beam/io.c b/erts/emulator/beam/io.c index b961c639f5..31c941337f 100644 --- a/erts/emulator/beam/io.c +++ b/erts/emulator/beam/io.c @@ -4450,6 +4450,7 @@ erts_port_call(Process* c_p, char input_buf[256]; char *bufp; byte *endp; + Uint uintsz; ErlDrvSizeT size; int try_call; erts_aint32_t sched_flags; @@ -4462,7 +4463,9 @@ erts_port_call(Process* c_p, try_call = !(sched_flags & ERTS_PTS_FLGS_FORCE_SCHEDULE_OP); - size = erts_encode_ext_size(data); + if (erts_encode_ext_size(data, &uintsz) != ERTS_EXT_SZ_OK) + return ERTS_PORT_OP_BADARG; + size = (ErlDrvSizeT) uintsz; if (!try_call) bufp = erts_alloc(ERTS_ALC_T_DRV_CALL_DATA, size); |