aboutgitcodebugslistschat
path: root/util.c
diff options
context:
space:
mode:
authorStefano Brivio <sbrivio@redhat.com>2022-03-15 23:17:44 +0100
committerStefano Brivio <sbrivio@redhat.com>2022-03-29 15:35:38 +0200
commit3eb19cfd8a7c03920aeecae6692048429288af88 (patch)
tree88ffb6c69fab2da82a9d9910da1c57d34804d739 /util.c
parent66a95e331ec930e72bc06c54b283ea88b30ecbaa (diff)
downloadpasst-3eb19cfd8a7c03920aeecae6692048429288af88.tar
passt-3eb19cfd8a7c03920aeecae6692048429288af88.tar.gz
passt-3eb19cfd8a7c03920aeecae6692048429288af88.tar.bz2
passt-3eb19cfd8a7c03920aeecae6692048429288af88.tar.lz
passt-3eb19cfd8a7c03920aeecae6692048429288af88.tar.xz
passt-3eb19cfd8a7c03920aeecae6692048429288af88.tar.zst
passt-3eb19cfd8a7c03920aeecae6692048429288af88.zip
tcp, udp, util: Enforce 24-bit limit on socket numbers
This should never happen, but there are no formal guarantees: ensure socket numbers are below SOCKET_MAX. Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Diffstat (limited to 'util.c')
-rw-r--r--util.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/util.c b/util.c
index 2d8952a..ff7d97b 100644
--- a/util.c
+++ b/util.c
@@ -235,10 +235,17 @@ int sock_l4(struct ctx *c, int af, uint8_t proto, uint16_t port,
fd = socket(af, SOCK_STREAM | SOCK_NONBLOCK, proto);
else
fd = socket(af, SOCK_DGRAM | SOCK_NONBLOCK, proto);
+
if (fd < 0) {
perror("L4 socket");
return -1;
}
+
+ if (fd > SOCKET_MAX) {
+ close(fd);
+ return -EIO;
+ }
+
ref.r.s = fd;
if (af == AF_INET) {