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);
}
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);
}
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);
}