|
commit 4bf6d76a22b9b601fd57df4aa0f4fba62733cb07
|
|
Author: Willy Tarreau <w@1wt.eu>
|
|
Date: Mon Oct 15 11:08:55 2018 +0200
|
|
|
|
BUG/MEDIUM: stream: don't crash on out-of-memory
|
|
|
|
In case pool_alloc() fails in stream_new(), we try to detach the stream
|
|
from the list before it has been added, dereferencing a NULL. In order
|
|
to fix it, simply move the LIST_DEL call upwards.
|
|
|
|
This must be backported to 1.8.
|
|
|
|
(cherry picked from commit e5f229e6392fd54aaba7fe58f457723c16b9d15f)
|
|
Signed-off-by: Willy Tarreau <w@1wt.eu>
|
|
|
|
diff --git a/src/stream.c b/src/stream.c
|
|
index 11c9dbf3..ef7cff5c 100644
|
|
--- a/src/stream.c
|
|
+++ b/src/stream.c
|
|
@@ -282,8 +282,8 @@ struct stream *stream_new(struct session *sess, enum obj_type *origin)
|
|
out_fail_accept:
|
|
flt_stream_release(s, 0);
|
|
task_free(t);
|
|
- out_fail_alloc:
|
|
LIST_DEL(&s->list);
|
|
+ out_fail_alloc:
|
|
pool_free(pool_head_stream, s);
|
|
return NULL;
|
|
}
|