From: Kalev Lember Date: Tue, 7 Nov 2017 15:10:45 +0000 (+0100) Subject: fetcher/curl: Fix invalid memory access in finalize() X-Git-Tag: archive/raspbian/2022.1-3+rpi1~1^2~4^2~29^2~34 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=176a7b4778fbacbbb0824cf8c612656cd0985499;p=ostree.git fetcher/curl: Fix invalid memory access in finalize() Reorder cleanup functions so that curl_multi_cleanup() runs before self->sockets is destroyed. This avoids an assert and invalid memory access in sock_cb where self->sockets is dereferenced during curl_multi_cleanup(). Closes: https://github.com/ostreedev/ostree/issues/1331 Closes: #1332 Approved by: cgwalters --- diff --git a/src/libostree/ostree-fetcher-curl.c b/src/libostree/ostree-fetcher-curl.c index 1f641882..8a23b163 100644 --- a/src/libostree/ostree-fetcher-curl.c +++ b/src/libostree/ostree-fetcher-curl.c @@ -167,6 +167,7 @@ _ostree_fetcher_finalize (GObject *object) { OstreeFetcher *self = OSTREE_FETCHER (object); + curl_multi_cleanup (self->multi); g_free (self->remote_name); g_free (self->cookie_jar_path); g_free (self->proxy); @@ -177,7 +178,6 @@ _ostree_fetcher_finalize (GObject *object) g_clear_pointer (&self->timer_event, (GDestroyNotify)destroy_and_unref_source); if (self->mainctx) g_main_context_unref (self->mainctx); - curl_multi_cleanup (self->multi); G_OBJECT_CLASS (_ostree_fetcher_parent_class)->finalize (object); }