diff options
| -rw-r--r-- | bgpd/bgp_route.c | 7 | ||||
| -rw-r--r-- | lib/elf_py.c | 29 | ||||
| -rw-r--r-- | ospfd/ospf_interface.c | 2 |
3 files changed, 20 insertions, 18 deletions
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index d4a63e6369..b8bcae6e0d 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -2113,10 +2113,11 @@ bool subgroup_announce_check(struct bgp_dest *dest, struct bgp_path_info *pi, if (ret == RMAP_DENYMATCH) { if (bgp_debug_update(NULL, p, subgrp->update_group, 0)) zlog_debug( - "%s [Update:SEND] %pFX is filtered by route-map", - peer->host, p); + "%s [Update:SEND] %pFX is filtered by route-map '%s'", + peer->host, p, + ROUTE_MAP_OUT_NAME(filter)); - bgp_attr_flush(attr); + bgp_attr_flush(&dummy_attr); return false; } } diff --git a/lib/elf_py.c b/lib/elf_py.c index b47aa3d795..c7f0819e8d 100644 --- a/lib/elf_py.c +++ b/lib/elf_py.c @@ -1065,26 +1065,25 @@ static void elffile_add_dynreloc(struct elffile *w, Elf_Data *reldata, * always be a pointer... */ if (elffile_virt2file(w, rel->r_offset, &offs)) { - Elf_Data *ptr, *conv; - GElf_Addr tmp; - Elf_Data mem = { - .d_buf = (void *)&tmp, - .d_type = ELF_T_ADDR, - .d_version = EV_CURRENT, - .d_size = sizeof(tmp), - .d_off = 0, - .d_align = 0, - }; + Elf_Data *ptr; + /* NB: this endian-converts! */ ptr = elf_getdata_rawchunk(w->elf, offs, w->elfclass / 8, ELF_T_ADDR); - conv = gelf_xlatetom(w->elf, &mem, ptr, - w->mmap[EI_DATA]); - if (conv) { - memcpy(&rel_offs, conv->d_buf, - conv->d_size); + if (ptr) { + char *dst = (char *)&rel_offs; + + /* sigh. it endian-converts. but + * doesn't size-convert. + */ + if (BYTE_ORDER == BIG_ENDIAN && + ptr->d_size < sizeof(rel_offs)) + dst += sizeof(rel_offs) - + ptr->d_size; + + memcpy(dst, ptr->d_buf, ptr->d_size); relw->relative = false; relw->rela->r_addend = rel_offs; diff --git a/ospfd/ospf_interface.c b/ospfd/ospf_interface.c index edbacdcff7..7f46e6db84 100644 --- a/ospfd/ospf_interface.c +++ b/ospfd/ospf_interface.c @@ -846,6 +846,8 @@ int ospf_if_down(struct ospf_interface *oi) /* Shutdown packet reception and sending */ ospf_if_stream_unset(oi); + if (!ospf->new_table) + return 1; for (rn = route_top(ospf->new_table); rn; rn = route_next(rn)) { or = rn->info; |
