diff options
| author | Satheesh Kumar K <sathk@cumulusnetworks.com> | 2019-10-10 21:33:19 -0700 | 
|---|---|---|
| committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2020-03-06 16:03:59 -0500 | 
| commit | 83f8a12b8ecbc3ffb285a59b6ce0a86e3a0cfb8f (patch) | |
| tree | 0d7f848ec54b3b866a7c8cb8c32b19d2155da241 /lib/mlag.h | |
| parent | fa696b37276b7c396e55aba1a55b0b7441af14e9 (diff) | |
lib, pimd, zebra: Provide some insurance against reading bad stream data
This patch does two things:
1) Ensure the decoding of stream data between pim <-> zebra is properly
decoded and we don't read beyond the end of the stream.
2) In zebra when we are freeing memory alloced ensure that we
actually have memory to delete before we do so.
Ticket: CM-27055
Signed-off-by: Satheesh Kumar K <sathk@cumulusnetworks.com>
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Diffstat (limited to 'lib/mlag.h')
| -rw-r--r-- | lib/mlag.h | 9 | 
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/mlag.h b/lib/mlag.h index c531fb5b68..37bb3aa6db 100644 --- a/lib/mlag.h +++ b/lib/mlag.h @@ -125,11 +125,14 @@ struct mlag_msg {  extern char *mlag_role2str(enum mlag_role role, char *buf, size_t size);  extern char *mlag_lib_msgid_to_str(enum mlag_msg_type msg_type, char *buf,  				   size_t size); -extern int mlag_lib_decode_mlag_hdr(struct stream *s, struct mlag_msg *msg); +extern int mlag_lib_decode_mlag_hdr(struct stream *s, struct mlag_msg *msg, +				    size_t *length);  extern int mlag_lib_decode_mroute_add(struct stream *s, -				      struct mlag_mroute_add *msg); +				      struct mlag_mroute_add *msg, +				      size_t *length);  extern int mlag_lib_decode_mroute_del(struct stream *s, -				      struct mlag_mroute_del *msg); +				      struct mlag_mroute_del *msg, +				      size_t *length);  extern int mlag_lib_decode_mlag_status(struct stream *s,  				       struct mlag_status *msg);  extern int mlag_lib_decode_vxlan_update(struct stream *s,  | 
