diff options
author | 2018-11-29 12:10:51 +0000 | |
---|---|---|
committer | 2018-11-29 12:10:51 +0000 | |
commit | 8eec92cabce56f9f30acd2b0c930335b6cb193c5 (patch) | |
tree | 95bb860557fdbe45d1d5335e7f139ac277acb8ce | |
parent | simplify (diff) | |
download | wireguard-openbsd-8eec92cabce56f9f30acd2b0c930335b6cb193c5.tar.xz wireguard-openbsd-8eec92cabce56f9f30acd2b0c930335b6cb193c5.zip |
community_ext_delete_non_trans() allocates new memory in all cases where
nlen > 0. So in those cases it is important to free() that memory after
use in all cases.
OK phessler@
-rw-r--r-- | usr.sbin/bgpd/rde_update.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/usr.sbin/bgpd/rde_update.c b/usr.sbin/bgpd/rde_update.c index 8157342058e..a9de19cc663 100644 --- a/usr.sbin/bgpd/rde_update.c +++ b/usr.sbin/bgpd/rde_update.c @@ -1,4 +1,4 @@ -/* $OpenBSD: rde_update.c,v 1.104 2018/11/28 08:32:27 claudio Exp $ */ +/* $OpenBSD: rde_update.c,v 1.105 2018/11/29 12:10:51 claudio Exp $ */ /* * Copyright (c) 2004 Claudio Jeker <claudio@openbsd.org> @@ -765,7 +765,7 @@ up_generate_attr(struct rde_peer *peer, struct update_attr *upa, u_int16_t len = sizeof(up_attr_buf), wlen = 0, plen; u_int8_t l; u_int16_t nlen = 0; - u_char *ndata = NULL; + u_char *ndata; /* origin */ if ((r = attr_write(up_attr_buf + wlen, len, ATTR_WELL_KNOWN, @@ -902,6 +902,7 @@ up_generate_attr(struct rde_peer *peer, struct update_attr *upa, free(ndata); return (-1); } + free(ndata); } else { /* everything got removed */ r = 0; |