summaryrefslogtreecommitdiff
path: root/ospfd/ospf_api.c
diff options
context:
space:
mode:
Diffstat (limited to 'ospfd/ospf_api.c')
-rw-r--r--ospfd/ospf_api.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/ospfd/ospf_api.c b/ospfd/ospf_api.c
index 1ace0977bc..7e7236a3b6 100644
--- a/ospfd/ospf_api.c
+++ b/ospfd/ospf_api.c
@@ -353,8 +353,8 @@ struct msg *msg_read(int fd)
struct msg *msg;
struct apimsghdr hdr;
uint8_t buf[OSPF_API_MAX_MSG_SIZE];
- int bodylen;
- int rlen;
+ ssize_t bodylen;
+ ssize_t rlen;
/* Read message header */
rlen = readn(fd, (uint8_t *)&hdr, sizeof(struct apimsghdr));
@@ -378,8 +378,13 @@ struct msg *msg_read(int fd)
/* Determine body length. */
bodylen = ntohs(hdr.msglen);
- if (bodylen > 0) {
+ if (bodylen > (ssize_t)sizeof(buf)) {
+ zlog_warn("%s: Body Length of message greater than what we can read",
+ __func__);
+ return NULL;
+ }
+ if (bodylen > 0) {
/* Read message body */
rlen = readn(fd, buf, bodylen);
if (rlen < 0) {