summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Jordan <mjordan@digium.com>2015-04-29 16:15:43 -0500
committerMatt Jordan <mjordan@digium.com>2015-04-29 16:25:16 -0500
commitd4e207e27ef4c5db85c88969b2aec999e1897ae4 (patch)
tree11fe1be7499bb083a79f5fcfb8956dcda4f0f67e
parent49ef81c15c114001f727129e9cfc2a4acfe2c5fa (diff)
main/rtp_engine: Fix DTLS double-free introduced by 0b6410c4f8
The patch in 0b6410c4f8 did correctly fix a memory leak of the DTLS structures in the RTP engine. However, when a 'core reload' is issued, a double free of the memory pointed to by the char *'s in the DTLS configuration struct can occur, as ast_rtp_dtls_cfg_free does not set the pointers to NULL when they are freed. This patch sets those pointers to NULL, preventing a second call to ast_rtp_dtls_cfg_free from corrupting memory. ASTERISK-25022 Change-Id: I820471e6070a37e3c26f760118c86770e12f6115
-rw-r--r--main/rtp_engine.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/main/rtp_engine.c b/main/rtp_engine.c
index 8d6977d88..4120ba546 100644
--- a/main/rtp_engine.c
+++ b/main/rtp_engine.c
@@ -1677,10 +1677,15 @@ void ast_rtp_dtls_cfg_copy(const struct ast_rtp_dtls_cfg *src_cfg, struct ast_rt
void ast_rtp_dtls_cfg_free(struct ast_rtp_dtls_cfg *dtls_cfg)
{
ast_free(dtls_cfg->certfile);
+ dtls_cfg->certfile = NULL;
ast_free(dtls_cfg->pvtfile);
+ dtls_cfg->pvtfile = NULL;
ast_free(dtls_cfg->cipher);
+ dtls_cfg->cipher = NULL;
ast_free(dtls_cfg->cafile);
+ dtls_cfg->cafile = NULL;
ast_free(dtls_cfg->capath);
+ dtls_cfg->capath = NULL;
}
/*! \internal