summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Larsson <lukas@erlang.org>2021-02-22 17:07:51 +0100
committerLukas Larsson <lukas@erlang.org>2021-03-03 08:44:08 +0100
commitd3ebe2b2453432975f00ae17db6eef0bf7a42aa2 (patch)
tree5a52eec6525338eda13bbcdca74e6237f2e4687c
parent19da074a5348580ff50eca6066eef419e660f38c (diff)
downloaderlang-d3ebe2b2453432975f00ae17db6eef0bf7a42aa2.tar.gz
erts: Return badarg if multiple sendfiles happen
-rw-r--r--erts/emulator/drivers/common/inet_drv.c7
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));