mirror of
https://github.com/haproxy/haproxy.git
synced 2026-04-15 21:59:41 -04:00
BUG/MEDIUM: ssl/cli: trying to access to free'd memory
Bug introduced by d9d5d1b ("MINOR: ssl: free instances and SNIs with
ckch_inst_free()").
Upon an 'commit ssl cert' the HA_RWLOCK_WRUNLOCK of the SNI lock is done
with using the bind_conf pointer of the ckch_inst which was freed.
Fix the problem by using an intermediate variable to store the
bind_conf pointer.
This commit is contained in:
parent
ba1c33f826
commit
d5e9377312
1 changed files with 4 additions and 2 deletions
|
|
@ -12010,9 +12010,11 @@ static int cli_io_handler_commit_cert(struct appctx *appctx)
|
|||
|
||||
/* delete the old sni_ctx, the old ckch_insts and the ckch_store */
|
||||
list_for_each_entry_safe(ckchi, ckchis, &old_ckchs->ckch_inst, by_ckchs) {
|
||||
HA_RWLOCK_WRLOCK(SNI_LOCK, &ckchi->bind_conf->sni_lock);
|
||||
struct bind_conf *bind_conf = ckchi->bind_conf;
|
||||
|
||||
HA_RWLOCK_WRLOCK(SNI_LOCK, &bind_conf->sni_lock);
|
||||
ckch_inst_free(ckchi);
|
||||
HA_RWLOCK_WRUNLOCK(SNI_LOCK, &ckchi->bind_conf->sni_lock);
|
||||
HA_RWLOCK_WRUNLOCK(SNI_LOCK, &bind_conf->sni_lock);
|
||||
}
|
||||
|
||||
/* Replace the old ckchs by the new one */
|
||||
|
|
|
|||
Loading…
Reference in a new issue