[Asterisk-code-review] rtp engine: Prevent possible double free with DTLS config (asterisk[master])
Sean Bright
asteriskteam at digium.com
Fri Sep 1 16:19:51 CDT 2017
Sean Bright has uploaded this change for review. ( https://gerrit.asterisk.org/6383
Change subject: rtp_engine: Prevent possible double free with DTLS config
......................................................................
rtp_engine: Prevent possible double free with DTLS config
ASTERISK-27225 #close
Reported by: Richard Kenner
Change-Id: I097b81734ef730f8603c0b972909d212a3a5cf89
---
M main/rtp_engine.c
1 file changed, 11 insertions(+), 5 deletions(-)
git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/83/6383/1
diff --git a/main/rtp_engine.c b/main/rtp_engine.c
index e078b24..673024e 100644
--- a/main/rtp_engine.c
+++ b/main/rtp_engine.c
@@ -2697,6 +2697,12 @@
return NULL;
}
+static void release_cfg_string(char **cfg)
+{
+ ast_free(*cfg);
+ *cfg = NULL;
+}
+
int ast_rtp_dtls_cfg_parse(struct ast_rtp_dtls_cfg *dtls_cfg, const char *name, const char *value)
{
if (!strcasecmp(name, "dtlsenable")) {
@@ -2718,31 +2724,31 @@
return -1;
}
} else if (!strcasecmp(name, "dtlscertfile")) {
- ast_free(dtls_cfg->certfile);
+ release_cfg_string(&dtls_cfg->certfile);
if (!ast_strlen_zero(value) && !ast_file_is_readable(value)) {
ast_log(LOG_ERROR, "%s file %s does not exist or is not readable\n", name, value);
return -1;
}
dtls_cfg->certfile = ast_strdup(value);
} else if (!strcasecmp(name, "dtlsprivatekey")) {
- ast_free(dtls_cfg->pvtfile);
+ release_cfg_string(&dtls_cfg->pvtfile);
if (!ast_strlen_zero(value) && !ast_file_is_readable(value)) {
ast_log(LOG_ERROR, "%s file %s does not exist or is not readable\n", name, value);
return -1;
}
dtls_cfg->pvtfile = ast_strdup(value);
} else if (!strcasecmp(name, "dtlscipher")) {
- ast_free(dtls_cfg->cipher);
+ release_cfg_string(&dtls_cfg->cipher);
dtls_cfg->cipher = ast_strdup(value);
} else if (!strcasecmp(name, "dtlscafile")) {
- ast_free(dtls_cfg->cafile);
+ release_cfg_string(&dtls_cfg->cafile);
if (!ast_strlen_zero(value) && !ast_file_is_readable(value)) {
ast_log(LOG_ERROR, "%s file %s does not exist or is not readable\n", name, value);
return -1;
}
dtls_cfg->cafile = ast_strdup(value);
} else if (!strcasecmp(name, "dtlscapath") || !strcasecmp(name, "dtlscadir")) {
- ast_free(dtls_cfg->capath);
+ release_cfg_string(&dtls_cfg->capath);
if (!ast_strlen_zero(value) && !ast_file_is_readable(value)) {
ast_log(LOG_ERROR, "%s file %s does not exist or is not readable\n", name, value);
return -1;
--
To view, visit https://gerrit.asterisk.org/6383
To unsubscribe, visit https://gerrit.asterisk.org/settings
Gerrit-Project: asterisk
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I097b81734ef730f8603c0b972909d212a3a5cf89
Gerrit-Change-Number: 6383
Gerrit-PatchSet: 1
Gerrit-Owner: Sean Bright <sean.bright at gmail.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20170901/2f92e659/attachment.html>
More information about the asterisk-code-review
mailing list