diff options
author | Donald Sharp <sharpd@cumulusnetworks.com> | 2015-09-17 10:54:25 -0400 |
---|---|---|
committer | Paul Jakma <paul@quagga.net> | 2015-09-24 15:26:44 +0100 |
commit | a9d4cb33faa6af622240190a80f41c4672374925 (patch) | |
tree | 9590bb1715d7418b50a742a3c83363d4e4b67755 /lib | |
parent | f733280419f18b1a0e3b06ec3681781689d57053 (diff) | |
download | quagga-a9d4cb33faa6af622240190a80f41c4672374925.tar.bz2 quagga-a9d4cb33faa6af622240190a80f41c4672374925.tar.xz |
lib/zclient: Consolidate error reporting for zclient_read_header
All functions that call zclient_read_header immediately turn around
and check to ensure that the version and marker fields are correct
Move this code into zclient_read_header
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/zclient.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/zclient.c b/lib/zclient.c index a0956324..0ce46fef 100644 --- a/lib/zclient.c +++ b/lib/zclient.c @@ -315,6 +315,13 @@ zclient_read_header (struct stream *s, int sock, u_int16_t *size, u_char *marker *vrf_id = stream_getw (s); *cmd = stream_getw (s); + if (*version != ZSERV_VERSION || *marker != ZEBRA_HEADER_MARKER) + { + zlog_err("%s: socket %d version mismatch, marker %d, version %d", + __func__, sock, *marker, *version); + return -1; + } + if (*size && stream_read (s, sock, *size) != *size) return -1; |