mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-22 22:31:28 +02:00
BUG/MINOR: stconn: fix sedesc memory leak on stream allocation failure
If we fail to allocate a new stream in sc_new_from_endp(), and the call to sc_new() allocated the sedesc itself (which normally doesn't happen), then it doesn't get released on the failure path. Let's explicitly handle this case so that it's not overlooked and avoids some head scratching sessions. This may be backported to 2.6.
This commit is contained in:
parent
e2f7946339
commit
7a8ca0a063
@ -171,8 +171,12 @@ struct stconn *sc_new_from_endp(struct sedesc *sd, struct session *sess, struct
|
||||
if (unlikely(!sc))
|
||||
return NULL;
|
||||
if (unlikely(!stream_new(sess, sc, input))) {
|
||||
pool_free(pool_head_connstream, sc);
|
||||
sd->sc = NULL;
|
||||
if (sc->sedesc != sd) {
|
||||
/* none was provided so sc_new() allocated one */
|
||||
sedesc_free(sc->sedesc);
|
||||
}
|
||||
pool_free(pool_head_connstream, sc);
|
||||
se_fl_set(sd, SE_FL_ORPHAN);
|
||||
return NULL;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user