diff options
author | Andreas Eversberg <jolly@eversberg.eu> | 2024-02-09 14:36:30 +0100 |
---|---|---|
committer | Andreas Eversberg <jolly@eversberg.eu> | 2024-02-28 16:43:01 +0100 |
commit | 2ce17dab2b8a3ff2e6528527fa541eb9995e6327 (patch) | |
tree | 0e3a33d797a52e3b5d6fa87a9585d33b9420a1ac | |
parent | d7256c6c19d87b1c24c1849ba89414807addda33 (diff) |
osmo_io: Reject writing messages with length of 0
io_uring will reject to transmit messages with length of 0.
Change-Id: I94be5ec7344d92157f7853c6c0ddf7007513ba8e
Related: OS#5751
-rw-r--r-- | src/core/osmo_io.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/core/osmo_io.c b/src/core/osmo_io.c index 5d25f66a..472edf9f 100644 --- a/src/core/osmo_io.c +++ b/src/core/osmo_io.c @@ -409,6 +409,11 @@ int osmo_iofd_write_msgb(struct osmo_io_fd *iofd, struct msgb *msg) { int rc; + if (OSMO_UNLIKELY(msgb_length(msg) == 0)) { + LOGPIO(iofd, LOGL_ERROR, "Length is 0, rejecting msgb.\n"); + return -EINVAL; + } + OSMO_ASSERT(iofd->mode == OSMO_IO_FD_MODE_READ_WRITE); if (OSMO_UNLIKELY(!iofd->io_ops.write_cb)) { LOGPIO(iofd, LOGL_ERROR, "write_cb not set, Rejecting msgb\n"); @@ -451,6 +456,11 @@ int osmo_iofd_sendto_msgb(struct osmo_io_fd *iofd, struct msgb *msg, int sendto_ { int rc; + if (OSMO_UNLIKELY(msgb_length(msg) == 0)) { + LOGPIO(iofd, LOGL_ERROR, "Length is 0, rejecting msgb.\n"); + return -EINVAL; + } + OSMO_ASSERT(iofd->mode == OSMO_IO_FD_MODE_RECVFROM_SENDTO); if (OSMO_UNLIKELY(!iofd->io_ops.sendto_cb)) { LOGPIO(iofd, LOGL_ERROR, "sendto_cb not set, Rejecting msgb\n"); @@ -499,6 +509,11 @@ int osmo_iofd_sendmsg_msgb(struct osmo_io_fd *iofd, struct msgb *msg, int sendms int rc; struct iofd_msghdr *msghdr; + if (OSMO_UNLIKELY(msgb_length(msg) == 0)) { + LOGPIO(iofd, LOGL_ERROR, "Length is 0, rejecting msgb.\n"); + return -EINVAL; + } + OSMO_ASSERT(iofd->mode == OSMO_IO_FD_MODE_RECVMSG_SENDMSG); if (OSMO_UNLIKELY(!iofd->io_ops.sendmsg_cb)) { LOGPIO(iofd, LOGL_ERROR, "sendmsg_cb not set, Rejecting msgb\n"); |