diff options
author | Lukas Larsson <lukas@erlang.org> | 2021-02-22 17:07:51 +0100 |
---|---|---|
committer | Lukas Larsson <lukas@erlang.org> | 2021-03-03 08:44:08 +0100 |
commit | d3ebe2b2453432975f00ae17db6eef0bf7a42aa2 (patch) | |
tree | 5a52eec6525338eda13bbcdca74e6237f2e4687c | |
parent | 19da074a5348580ff50eca6066eef419e660f38c (diff) | |
download | erlang-d3ebe2b2453432975f00ae17db6eef0bf7a42aa2.tar.gz |
erts: Return badarg if multiple sendfiles happen
-rw-r--r-- | erts/emulator/drivers/common/inet_drv.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/erts/emulator/drivers/common/inet_drv.c b/erts/emulator/drivers/common/inet_drv.c index e4fc0d1a6b..7e0a669ab6 100644 --- a/erts/emulator/drivers/common/inet_drv.c +++ b/erts/emulator/drivers/common/inet_drv.c @@ -10311,6 +10311,13 @@ static ErlDrvSSizeT tcp_inet_ctl(ErlDrvData e, unsigned int cmd, return ctl_error(EINVAL, rbuf, rsize); } else if (!IS_CONNECTED(INETP(desc))) { return ctl_error(ENOTCONN, rbuf, rsize); + } else if (desc->tcp_add_flags & TCP_ADDF_SENDFILE) { + /* This should not happen as prim_inet.erl makes + sure that only the controlling process can + use the sendfile operation. But we add this + check here anyways just in case that prim_inet + is changed... */ + return ctl_error(EINVAL, rbuf, rsize); } sys_memcpy(&raw_file_fd, buf, sizeof(raw_file_fd)); |