Skip to content

Commit 41d7f64

Browse files
committed
Fix memory leak in config load
reported by valgrind
1 parent c74ab03 commit 41d7f64

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

src/opts.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2628,22 +2628,32 @@ set_conn_opts_option(conn_opts_t *conn_opts, const char *argv0,
26282628
}
26292629

26302630
if (equal(name, "CACert")) {
2631+
if (conn_opts->cacrt_str)
2632+
free(conn_opts->cacrt_str);
26312633
if ((conn_opts->cacrt_str = strdup(value)) == NULL)
26322634
return oom_return(argv0);
26332635
return opts_set_cacrt(conn_opts, argv0, value, tmp_opts);
26342636
} else if (equal(name, "CAKey")) {
2637+
if (conn_opts->cakey_str)
2638+
free(conn_opts->cakey_str);
26352639
if ((conn_opts->cakey_str = strdup(value)) == NULL)
26362640
return oom_return(argv0);
26372641
return opts_set_cakey(conn_opts, argv0, value, tmp_opts);
26382642
} else if (equal(name, "ClientCert")) {
2643+
if (conn_opts->clientcrt_str)
2644+
free(conn_opts->clientcrt_str);
26392645
if ((conn_opts->clientcrt_str = strdup(value)) == NULL)
26402646
return oom_return(argv0);
26412647
return opts_set_clientcrt(conn_opts, argv0, value, tmp_opts);
26422648
} else if (equal(name, "ClientKey")) {
2649+
if (conn_opts->clientkey_str)
2650+
free(conn_opts->clientkey_str);
26432651
if ((conn_opts->clientkey_str = strdup(value)) == NULL)
26442652
return oom_return(argv0);
26452653
return opts_set_clientkey(conn_opts, argv0, value, tmp_opts);
26462654
} else if (equal(name, "CAChain")) {
2655+
if (conn_opts->chain_str)
2656+
free(conn_opts->chain_str);
26472657
if ((conn_opts->chain_str = strdup(value)) == NULL)
26482658
return oom_return(argv0);
26492659
return opts_set_chain(conn_opts, argv0, value, tmp_opts);
@@ -2667,6 +2677,8 @@ set_conn_opts_option(conn_opts_t *conn_opts, const char *argv0,
26672677
#endif /* DEBUG_OPTS */
26682678
#ifndef OPENSSL_NO_DH
26692679
} else if (equal(name, "DHGroupParams")) {
2680+
if (conn_opts->dh_str)
2681+
free(conn_opts->dh_str);
26702682
if ((conn_opts->dh_str = strdup(value)) == NULL)
26712683
return oom_return(argv0);
26722684
return opts_set_dh(conn_opts, argv0, value, tmp_opts);

0 commit comments

Comments
 (0)