diff options
| author | David Lamparter <equinox@opensourcerouting.org> | 2020-04-06 20:26:13 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-04-06 20:26:13 +0200 |
| commit | 6b1d9f37ec25399bbbb0bfc1c2e33d35877b5c35 (patch) | |
| tree | 44181a25ee2232f08e327bc5b467f594fc21e0e5 /pimd | |
| parent | dc61176306ea68adf59bccc74b6c311971113bc2 (diff) | |
| parent | 817f893343b631f4822f2fd5a596e15ae0c7301f (diff) | |
Merge pull request #6160 from qlyoung/fix-pim-bsm-negative-shift
pimd: fix negative bitshift in BSM code
Diffstat (limited to 'pimd')
| -rw-r--r-- | pimd/pim_bsm.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/pimd/pim_bsm.c b/pimd/pim_bsm.c index ad47427101..d949c657bd 100644 --- a/pimd/pim_bsm.c +++ b/pimd/pim_bsm.c @@ -1282,6 +1282,13 @@ int pim_bsm_process(struct interface *ifp, struct ip *ip_hdr, uint8_t *buf, bshdr = (struct bsm_hdr *)(buf + PIM_MSG_HEADER_LEN); pim_inet4_dump("<bsr?>", bshdr->bsr_addr.addr, bsr_str, sizeof(bsr_str)); + if (bshdr->hm_len > 32) { + zlog_warn("Bad hashmask length for IPv4; got %" PRIu8 + ", expected value in range 0-32", + bshdr->hm_len); + pim->bsm_dropped++; + return -1; + } pim->global_scope.hashMasklen = bshdr->hm_len; frag_tag = ntohs(bshdr->frag_tag); |
