Fix memory leak in mosquitto_tls_opts_set()
When calling mosquitto_tls_opts_set() multiple time in a row on the same mosquitto context (Example: trying to reconnect to mqtt broker), some of the tls options are not free, resulting in a memory leak. The TLS options (tls_version, tls_ciphers) must be free before being set. Signed-off-by: Guillaume PELLEGRINO <guillaume.pellegrino@yahoo.com>
This commit is contained in:
parent
7ff2198c7d
commit
9018f12dfc
@ -228,19 +228,23 @@ int mosquitto_tls_opts_set(struct mosquitto *mosq, int cert_reqs, const char *tl
|
||||
|| !strcasecmp(tls_version, "tlsv1.2")
|
||||
|| !strcasecmp(tls_version, "tlsv1.1")){
|
||||
|
||||
mosquitto__free(mosq->tls_version);
|
||||
mosq->tls_version = mosquitto__strdup(tls_version);
|
||||
if(!mosq->tls_version) return MOSQ_ERR_NOMEM;
|
||||
}else{
|
||||
return MOSQ_ERR_INVAL;
|
||||
}
|
||||
}else{
|
||||
mosquitto__free(mosq->tls_version);
|
||||
mosq->tls_version = mosquitto__strdup("tlsv1.2");
|
||||
if(!mosq->tls_version) return MOSQ_ERR_NOMEM;
|
||||
}
|
||||
if(ciphers){
|
||||
mosquitto__free(mosq->tls_ciphers);
|
||||
mosq->tls_ciphers = mosquitto__strdup(ciphers);
|
||||
if(!mosq->tls_ciphers) return MOSQ_ERR_NOMEM;
|
||||
}else{
|
||||
mosquitto__free(mosq->tls_ciphers);
|
||||
mosq->tls_ciphers = NULL;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user