In `ckch_inst_sni_ctx_to_sni_filters` use `calloc()` to allocate the filter array. When the function fails to allocate memory for a single entry the whole array will be `free()`d using free_sni_filters(). With the previous `malloc()` the pointers for entries after the failing allocation could possibly be a garbage value.
This bug was introduced in commit 38df1c8006a2adf97f4ad5a183f80cfdcba3da8a, which is 2.2+. No backport needed. --- src/ssl_sock.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ssl_sock.c b/src/ssl_sock.c index 73375bcf9..3d32ced7f 100644 --- a/src/ssl_sock.c +++ b/src/ssl_sock.c @@ -3939,7 +3939,7 @@ static int ckch_inst_sni_ctx_to_sni_filters(const struct ckch_inst *ckchi, char if (!tmp_fcount) goto end; - tmp_filter = malloc(sizeof(*tmp_filter) * tmp_fcount); + tmp_filter = calloc(tmp_fcount, sizeof(*tmp_filter)); if (!tmp_filter) { errcode |= ERR_FATAL|ERR_ALERT; goto error; -- 2.25.2