diff options
author | Sean Bright <sean.bright@gmail.com> | 2017-09-01 17:17:38 -0400 |
---|---|---|
committer | Sean Bright <sean.bright@gmail.com> | 2017-09-01 17:59:53 -0500 |
commit | a0b034647627948a6e8973b33f608d7ae19793a1 (patch) | |
tree | 640f334840ad2030243ba8a1d2c5fffcbc4f4303 | |
parent | a48010e1e0812ba1007e91f007fed7079512747e (diff) |
rtp_engine: Prevent possible double free with DTLS config
ASTERISK-27225 #close
Reported by: Richard Kenner
Change-Id: I097b81734ef730f8603c0b972909d212a3a5cf89
-rw-r--r-- | main/rtp_engine.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/main/rtp_engine.c b/main/rtp_engine.c index 8d6c337a4..2f91b5a64 100644 --- a/main/rtp_engine.c +++ b/main/rtp_engine.c @@ -2702,35 +2702,35 @@ int ast_rtp_dtls_cfg_parse(struct ast_rtp_dtls_cfg *dtls_cfg, const char *name, return -1; } } else if (!strcasecmp(name, "dtlscertfile")) { - ast_free(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; } + ast_free(dtls_cfg->certfile); dtls_cfg->certfile = ast_strdup(value); } else if (!strcasecmp(name, "dtlsprivatekey")) { - ast_free(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; } + ast_free(dtls_cfg->pvtfile); dtls_cfg->pvtfile = ast_strdup(value); } else if (!strcasecmp(name, "dtlscipher")) { ast_free(dtls_cfg->cipher); dtls_cfg->cipher = ast_strdup(value); } else if (!strcasecmp(name, "dtlscafile")) { - ast_free(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; } + ast_free(dtls_cfg->cafile); dtls_cfg->cafile = ast_strdup(value); } else if (!strcasecmp(name, "dtlscapath") || !strcasecmp(name, "dtlscadir")) { - ast_free(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; } + ast_free(dtls_cfg->capath); dtls_cfg->capath = ast_strdup(value); } else if (!strcasecmp(name, "dtlssetup")) { if (!strcasecmp(value, "active")) { |