summaryrefslogtreecommitdiff
path: root/ospfd/ospf_api.c
diff options
context:
space:
mode:
authorJafar Al-Gharaibeh <jafar@atcorp.com>2025-02-06 10:15:55 -0600
committerGitHub <noreply@github.com>2025-02-06 10:15:55 -0600
commit92288c9069664930accec6acd0b9c3b6cb42848b (patch)
tree798b47883e4f6ba0bf26217f24469839e98483e3 /ospfd/ospf_api.c
parent075f44a417dfd8e025945cfc26cfd4b11b5c361b (diff)
parent19af3f3d7af0f8904794dae3c36f60ed1d5a3cc8 (diff)
Merge pull request #17865 from donaldsharp/coverity_2024_new_hotness
Coverity 2024 new hotness
Diffstat (limited to 'ospfd/ospf_api.c')
-rw-r--r--ospfd/ospf_api.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/ospfd/ospf_api.c b/ospfd/ospf_api.c
index 213ee8c1fd..cfc13fcc53 100644
--- a/ospfd/ospf_api.c
+++ b/ospfd/ospf_api.c
@@ -514,6 +514,12 @@ struct msg *new_msg_originate_request(uint32_t seqnum, struct in_addr ifaddr,
omsglen += sizeof(struct msg_originate_request)
- sizeof(struct lsa_header);
+ if (omsglen > UINT16_MAX) {
+ zlog_warn("%s: LSA specified is bigger than maximum LSA size, something is wrong",
+ __func__);
+ omsglen = UINT16_MAX;
+ }
+
return msg_new(MSG_ORIGINATE_REQUEST, omsg, seqnum, omsglen);
}
@@ -639,6 +645,12 @@ struct msg *new_msg_lsa_change_notify(uint8_t msgtype, uint32_t seqnum,
memcpy(nmsg_data, data, len);
len += sizeof(struct msg_lsa_change_notify) - sizeof(struct lsa_header);
+ if (len > UINT16_MAX) {
+ zlog_warn("%s: LSA specified is bigger than maximum LSA size, something is wrong",
+ __func__);
+ len = UINT16_MAX;
+ }
+
return msg_new(msgtype, nmsg, seqnum, len);
}
@@ -666,6 +678,12 @@ struct msg *new_msg_reachable_change(uint32_t seqnum, uint16_t nadd,
nmsg->nremove = htons(nremove);
len = sizeof(*nmsg) + insz * (nadd + nremove);
+ if (len > UINT16_MAX) {
+ zlog_warn("%s: LSA specified is bigger than maximum LSA size, something is wrong",
+ __func__);
+ len = UINT16_MAX;
+ }
+
return msg_new(MSG_REACHABLE_CHANGE, nmsg, seqnum, len);
}