diff options
author | 2020-09-30 20:37:49 +0000 | |
---|---|---|
committer | 2020-09-30 20:37:49 +0000 | |
commit | ada13acc9acea55e14d38c0ad64292f2d4dcdbea (patch) | |
tree | 795bc65662389b72083b3b9285a948f16168e69a | |
parent | Document BPF_RND. Missed part of the xBPF commit (bpf_filter.c -r1.34). (diff) | |
download | wireguard-openbsd-ada13acc9acea55e14d38c0ad64292f2d4dcdbea.tar.xz wireguard-openbsd-ada13acc9acea55e14d38c0ad64292f2d4dcdbea.zip |
Fix two minor memory leaks.
the first is when a varbind index is of the type ipaddress.
the second is on EOMV and the a varbind index is ipaddress or octetstring,
where the wrong field is being freed (which in this case is always NULL and
unused)
-rw-r--r-- | lib/libagentx/subagentx.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/libagentx/subagentx.c b/lib/libagentx/subagentx.c index ccb9684196b..ac2dccdb4d6 100644 --- a/lib/libagentx/subagentx.c +++ b/lib/libagentx/subagentx.c @@ -2686,7 +2686,9 @@ subagentx_get_free(struct subagentx_get *sag) sao = sav->sav_sao; index = &(sav->sav_index[j]); if (sao->sao_index[j]->sai_vb.avb_type == - AGENTX_DATA_TYPE_OCTETSTRING) + AGENTX_DATA_TYPE_OCTETSTRING || + sao->sao_index[j]->sai_vb.avb_type == + AGENTX_DATA_TYPE_IPADDRESS) free(index->sav_idata.avb_ostring.aos_string); } agentx_varbind_free(&(sag->sag_varbind[i].sav_vb)); @@ -3335,6 +3337,7 @@ subagentx_varbind_endofmibview(struct subagentx_varbind *sav) { struct subagentx_object *sao; struct agentx_varbind *vb; + struct subagentx_varbind_index *index; size_t i; #ifdef AGENTX_DEBUG @@ -3352,10 +3355,11 @@ subagentx_varbind_endofmibview(struct subagentx_varbind *sav) sizeof(sao->sao_oid)); sav->sav_include = 1; for (i = 0; i < sav->sav_indexlen; i++) { - vb = &(sav->sav_index[i].sav_sai->sai_vb); + index = &(sav->sav_index[i]); + vb = &(index->sav_sai->sai_vb); if (vb->avb_type == AGENTX_DATA_TYPE_OCTETSTRING || vb->avb_type == AGENTX_DATA_TYPE_IPADDRESS) - free(vb->avb_data.avb_ostring.aos_string); + free(index->sav_idata.avb_ostring.aos_string); } bzero(&(sav->sav_index), sizeof(sav->sav_index)); subagentx_object_unlock(sav->sav_sao); |