summaryrefslogtreecommitdiff
path: root/lib/mlag.h
diff options
context:
space:
mode:
authorSatheesh Kumar K <sathk@cumulusnetworks.com>2019-10-10 21:33:19 -0700
committerDonald Sharp <sharpd@cumulusnetworks.com>2020-03-06 16:03:59 -0500
commit83f8a12b8ecbc3ffb285a59b6ce0a86e3a0cfb8f (patch)
tree0d7f848ec54b3b866a7c8cb8c32b19d2155da241 /lib/mlag.h
parentfa696b37276b7c396e55aba1a55b0b7441af14e9 (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.h9
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,