From a6a83171d5c7d09301ffd52ac9ea5c67758714ee Mon Sep 17 00:00:00 2001 From: Dimitri Staessens Date: Fri, 16 Mar 2018 13:07:15 +0100 Subject: ipcpd: Fix reading LSAs in link-state policy The read buffer had the exact length of a link-state message. With the partial read implemented, we should then do another read() to check if there are more parts of the message (which will return 0). To avoid the additional read() call every time, the buffer was extended by 1 byte. Signed-off-by: Dimitri Staessens Signed-off-by: Sander Vrijders --- src/ipcpd/normal/pol/link_state.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/ipcpd/normal/pol/link_state.c b/src/ipcpd/normal/pol/link_state.c index 61469b94..7aa7faf7 100644 --- a/src/ipcpd/normal/pol/link_state.c +++ b/src/ipcpd/normal/pol/link_state.c @@ -655,7 +655,7 @@ static void * lsreader(void * o) { fqueue_t * fq; int ret; - uint8_t buf[sizeof(struct lsa)]; + uint8_t buf[sizeof(struct lsa) + 1]; int fd; qosspec_t qs; struct lsa * msg; @@ -680,7 +680,7 @@ static void * lsreader(void * o) } while ((fd = fqueue_next(fq)) >= 0) { - len = flow_read(fd, buf, sizeof(*msg)); + len = flow_read(fd, buf, sizeof(*msg) + 1); if (len <= 0 || len != sizeof(*msg)) continue; -- cgit v1.2.3