diff options
author | Claudio Jeker <claudio@cvs.openbsd.org> | 2018-09-25 07:58:12 +0000 |
---|---|---|
committer | Claudio Jeker <claudio@cvs.openbsd.org> | 2018-09-25 07:58:12 +0000 |
commit | 9e1c1dc716d81c8f8d14e378d8e4e8188cd974be (patch) | |
tree | cd96306558d4cd351e45f83226a58a95cb6d0b15 /usr.sbin/bgpd/bgpd.c | |
parent | 57986541f6a6f8a1ccf20d82be7854992a7c4664 (diff) |
When sending set_tables in the imsg use the right size. Currently the
number of elements is used as size which is always wrong.
Diffstat (limited to 'usr.sbin/bgpd/bgpd.c')
-rw-r--r-- | usr.sbin/bgpd/bgpd.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/usr.sbin/bgpd/bgpd.c b/usr.sbin/bgpd/bgpd.c index 108f636b48d..7c2e215b2a9 100644 --- a/usr.sbin/bgpd/bgpd.c +++ b/usr.sbin/bgpd/bgpd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: bgpd.c,v 1.201 2018/09/21 04:55:27 claudio Exp $ */ +/* $OpenBSD: bgpd.c,v 1.202 2018/09/25 07:58:11 claudio Exp $ */ /* * Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org> @@ -529,15 +529,15 @@ reconfigure(char *conffile, struct bgpd_config *conf, struct peer **peer_l) ps->name, sizeof(ps->name)) == -1) return (-1); RB_FOREACH_SAFE(psi, prefixset_tree, &ps->psitems, npsi) { - u_int32_t *as; + struct roa_set *rs; size_t i, l, n; RB_REMOVE(prefixset_tree, &ps->psitems, psi); - as = set_get(psi->set, &n); + rs = set_get(psi->set, &n); for (i = 0; i < n; i += l) { l = (n - i > 1024 ? 1024 : n - i); if (imsg_compose(ibuf_rde, IMSG_RECONF_ROA_AS_SET_ITEMS, - 0, 0, -1, as + i, l) == -1) + 0, 0, -1, rs + i, l * sizeof(*rs)) == -1) return -1; } if (imsg_compose(ibuf_rde, IMSG_RECONF_PREFIXSETITEM, 0, @@ -569,7 +569,7 @@ reconfigure(char *conffile, struct bgpd_config *conf, struct peer **peer_l) for (i = 0; i < n; i += l) { l = (n - i > 1024 ? 1024 : n - i); if (imsg_compose(ibuf_rde, IMSG_RECONF_AS_SET_ITEMS, - 0, 0, -1, as + i, l) == -1) + 0, 0, -1, as + i, l * sizeof(*as)) == -1) return -1; } |