mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-10 11:58:08 +00:00
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
This commit is contained in:
@@ -2189,10 +2189,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)
|
void ast_rtp_dtls_cfg_free(struct ast_rtp_dtls_cfg *dtls_cfg)
|
||||||
{
|
{
|
||||||
ast_free(dtls_cfg->certfile);
|
ast_free(dtls_cfg->certfile);
|
||||||
|
dtls_cfg->certfile = NULL;
|
||||||
ast_free(dtls_cfg->pvtfile);
|
ast_free(dtls_cfg->pvtfile);
|
||||||
|
dtls_cfg->pvtfile = NULL;
|
||||||
ast_free(dtls_cfg->cipher);
|
ast_free(dtls_cfg->cipher);
|
||||||
|
dtls_cfg->cipher = NULL;
|
||||||
ast_free(dtls_cfg->cafile);
|
ast_free(dtls_cfg->cafile);
|
||||||
|
dtls_cfg->cafile = NULL;
|
||||||
ast_free(dtls_cfg->capath);
|
ast_free(dtls_cfg->capath);
|
||||||
|
dtls_cfg->capath = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void set_next_mime_type(const struct ast_format *format, int rtp_code, char *type, char *subtype, unsigned int sample_rate)
|
static void set_next_mime_type(const struct ast_format *format, int rtp_code, char *type, char *subtype, unsigned int sample_rate)
|
||||||
|
|||||||
Reference in New Issue
Block a user