From: Stephan Bosch Date: Wed, 14 Apr 2021 08:45:55 +0000 (+0200) Subject: lib-http: http-client-peer - Fix segfault occurring upon backoff connect. X-Git-Tag: 2.3.16~162 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f2fc1c01f81cc2f2193cf0437fb1e4c5fcecb63e;p=thirdparty%2Fdovecot%2Fcore.git lib-http: http-client-peer - Fix segfault occurring upon backoff connect. If peers decide to close and destroy immediately, the iteration in the shared peer yields an invalid pointer for the next peer to connect. Fixed by preserving pointer to next peer inside the loop. --- diff --git a/src/lib-http/http-client-peer.c b/src/lib-http/http-client-peer.c index 2b1eca1fc0..eff40b4507 100644 --- a/src/lib-http/http-client-peer.c +++ b/src/lib-http/http-client-peer.c @@ -426,8 +426,10 @@ http_client_peer_shared_connect_backoff(struct http_client_peer_shared *pshared) peer = pshared->peers_list; while (peer != NULL) { + struct http_client_peer *peer_next = peer->shared_next; + http_client_peer_connect_backoff(peer); - peer = peer->shared_next; + peer = peer_next; } }