From patchwork Sun Jan 19 19:18:33 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: morganamilo X-Patchwork-Id: 1458 Return-Path: Delivered-To: patchwork@archlinux.org Received: from apollo.archlinux.org (localhost [127.0.0.1]) by apollo.archlinux.org (Postfix) with ESMTP id F1DD1166B10DF for ; Sun, 19 Jan 2020 19:20:45 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.3 (2019-12-06) on apollo.archlinux.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1,DKIM_VALID=-0.1,DKIM_VALID_AU=-0.1, MAILING_LIST_MULTI=-1,RCVD_IN_DNSWL_MED=-2.3,SPF_HELO_NONE=0.001, T_DMARC_POLICY_NONE=0.01 autolearn=ham autolearn_force=no version=3.4.3 X-Spam-BL-Results: [127.0.0.10] [127.0.9.2] Received: from orion.archlinux.org (orion.archlinux.org [88.198.91.70]) by apollo.archlinux.org (Postfix) with ESMTPS for ; Sun, 19 Jan 2020 19:20:45 +0000 (UTC) Received: from orion.archlinux.org (localhost [127.0.0.1]) by orion.archlinux.org (Postfix) with ESMTP id CEE981831A7B65; Sun, 19 Jan 2020 19:20:43 +0000 (UTC) Received: from luna.archlinux.org (luna.archlinux.org [IPv6:2a01:4f8:160:3033::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits)) (No client certificate requested) (Authenticated sender: luna) by orion.archlinux.org (Postfix) with ESMTPSA id 520D91831A7B5E; Sun, 19 Jan 2020 19:20:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=archlinux.org; s=orion; t=1579461643; bh=9Fm3npXNo91Z0BsjwQczfEMPMWedUJ2v423kGH2F1Ws=; h=From:To:Date:Subject:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:Reply-To; b=tbKECYTPlV9Pcfp3O7xoEzM2TVJPGxUHY4RbaQrl8CNrr0gn3A/bSIEVX38Y2A5W0 jGLTEP71AR0guuKzHcMqoij3qZ35olyH+H6CMetVWOBYiAmolaHZLZLuo+CQDSltJE OKUJxMXRz7qsVoaGLVso8i0gWtg59F5NU5TC1pssdBjfweKS5ss4wriDIxFqSeY7g7 To7rh8Shi0R/fDnJ63vLh3gH6oh5HbxNDxCwvVo1ufBVle9QA+rXln7+Q4XaZrPFVz u4vZ4ienMZauXApa3g2oesSAP0tbAu6Uoq/OG8dsYLs2l0xL/+XN/07dcW4KxmMJOu GO0EOsiIBaMceNWmaU/OuBDzjkSnle2bOoo1mipK/zJtJp5fd7rbnEbeuhgYnecKPr TFbwiIf8bYfdqbDJMAvKT9BxqJ5R3Kk77o/iLAQTH1J24n3mDWABB2i94Yxhccc89t jYkf1dlBcOKSLojaCHh0CdXFmzLhE4KsXBU3EL6u+XTUFMZpy5bfVzRHw+eM9P3etd 365f6QqZWyXwGgGIXBaF4m5ynQb1R4B8ahpJRIo5LfZ/JJdFU6YnbIlkzzlLTzVbtn 91PgxS95tcdp0Q1Skx1e1XC9/rS49+migPBs4Fcr41jHp6atpTSjDbqJxokpJGX4/y WJaT7FD2f97MFKEOiTmJ7OJc= Received: from luna.archlinux.org (luna.archlinux.org [127.0.0.1]) by luna.archlinux.org (Postfix) with ESMTP id 3EA4F2BFE3; Sun, 19 Jan 2020 19:20:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=archlinux.org; s=luna2; t=1579461643; bh=9Fm3npXNo91Z0BsjwQczfEMPMWedUJ2v423kGH2F1Ws=; h=From:To:Date:Subject:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:Reply-To; b=ipdb3RMDF1pXk7Z1xt6LhNG4QFp6Hbs2/4+fOweoEqh8E+QtzjFjYzeg4wjYA7bJj +eQPQk0lW/IJk3oJqqEGwv+mKCxQH1qjVFyqqMFcli3DCxUIJviXjzZzlE2UexWuTw paAc7nsxoxmkGO6JvEFVIqpwNsABuuU8XTGpFSZ/WwIrvBZq+16dEotvqikyyE2LMn NPcEjRkmRKzbfDsoqmGJkL3qU5lTrwNJsAUMg+7qXgMvlqyj6BhPhl1YxKa3Dhyvsq zKlsP3SCXOsndswSdV1+vv8KiwauH1SnjuAXGJKjzjbyU1tke/QVe/vgKUxXHJ8QKY IUJ4EtKjFd5/3BrvQifqB37sLQ4kAB+P3vcMWykR97Vh5U09gUVBSjOjFBZHdOX10o 9tjdRUjdHpNjWXVcsf1ibO4NN9rpbK0mWpLu3BjegGDk7ff2FX6hYZA8pw59yvLVyc /Mm4geBWUCLxAoM9UL4qkhqEzHHB8HwNPLsheZRIyzVwJxhEbKQKSNjiuz5OmGNL/1 1Ia7VZUeD+6QG4KJ2LapFlRgyIhidylmOpcgecPcdn9FaZu1sps+Kw34g2zcbB2CcI +thxHdlFRbxldAEY7wWk1u59UHXsA6ZB3T1WqWl2CigOXQkHOxC8hOemT3N4YLCkbB Fm2IoIG2BXlZFD/gBt7vTGN8= Received: from luna.archlinux.org (luna.archlinux.org [127.0.0.1]) by luna.archlinux.org (Postfix) with ESMTP id 190F02BFE1 for ; Sun, 19 Jan 2020 19:20:40 +0000 (UTC) Received: from orion.archlinux.org (orion.archlinux.org [88.198.91.70]) by luna.archlinux.org (Postfix) with ESMTPS for ; Sun, 19 Jan 2020 19:20:40 +0000 (UTC) Received: from orion.archlinux.org (localhost [127.0.0.1]) by orion.archlinux.org (Postfix) with ESMTP id 0A69A1831A7B59; Sun, 19 Jan 2020 19:20:39 +0000 (UTC) Received: from localhost.localdomain (host-92-14-139-121.as43234.net [92.14.139.121]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: morganamilo) by orion.archlinux.org (Postfix) with ESMTPSA id C69F21831A7B58; Sun, 19 Jan 2020 19:20:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=archlinux.org; s=orion; t=1579461638; bh=9Fm3npXNo91Z0BsjwQczfEMPMWedUJ2v423kGH2F1Ws=; h=From:To:Cc:Subject:Date; b=s3SeNvwEdnKPm38gAZ9FBxxbaeaKd9TQNEQbSI7aUcmbKTKa1BKcsI746nuIMEeGZ X+Nifn+oEHd+ZS1gwK0+01EZzDgOuP/1slF/ciDxGxNWy2FRiHHDuDgQtQlIkE6YdS ZwXDe6dAily3vPAOxbVcKGqf0ceJoVi75XWpgEpt/a1Oe7bjCUOfljrS6AhuslPhuD 0iMwlE7loYezN3leHhWn155G1aNAGpl75v8GZIoTZ4orSYLkAetHlEVRInftB8h16Z RDph8s1QWFBJ4Ya2r9dogI46aiDE/ejANBD2rncx9f5LAfpMVZ+5vCVsC/dbZYALKg 1rE6pLKOaJvBmwO09yyu6zlfa9E4pAEfQGqj1Vp/Jx2NbyqRUYxWgsu9P1S716z050 HZP7zXiiH9yD2/+iF8FeRLGYBhn+5jZ8gC3dRvF36xL6VublEO5nQdUXn05Umc1wjk X+yJDrgmf+oTdOAQOHwH/YxxJIMQ9iRV0sX4uQH6RNpI/pxamM61TI6JPRUT5kMTEO 70dERvieIj7uMVpF0nN3a4pRZVdzyVht3nYFXJ3+1UAFYEXxFbwF9OXPteFUu2VUZL zLjSy5uqxMcy8JvlfmLNkj1ouKlKv9FHC6mn97Cm8Cdtt3u1tHZUJfOFs7hTkmChrk gZB/k1g6rLfbY/jtNLyCL5rM= From: morganamilo To: pacman-dev@archlinux.org Date: Sun, 19 Jan 2020 19:18:33 +0000 Message-Id: <20200119191833.581492-1-morganamilo@archlinux.org> X-Mailer: git-send-email 2.25.0 MIME-Version: 1.0 Subject: [pacman-dev] [PATCH] libalpm: free trans before databases X-BeenThere: pacman-dev@archlinux.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion list for pacman development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Discussion list for pacman development Errors-To: pacman-dev-bounces@archlinux.org Sender: "pacman-dev" When releasing the handle, alpm tries to do some self clean up by freeing the databases and transaction. However, databases refuse to unregister is there is an in progress transaction. Causing them to leak if the handle is released while a transaction is active. diff --git a/lib/libalpm/alpm.c b/lib/libalpm/alpm.c index 1a378db9..02b8fc9b 100644 --- a/lib/libalpm/alpm.c +++ b/lib/libalpm/alpm.c @@ -30,6 +30,7 @@ #include "alpm_list.h" #include "handle.h" #include "log.h" +#include "trans.h" #include "util.h" /** \addtogroup alpm_interface Interface Functions @@ -114,6 +115,8 @@ int SYMEXPORT alpm_release(alpm_handle_t *myhandle) CHECK_HANDLE(myhandle, return -1); + _alpm_trans_free(myhandle->trans); + /* close local database */ db = myhandle->db_local; if(db) { diff --git a/lib/libalpm/handle.c b/lib/libalpm/handle.c index e3193f40..1e42f4a8 100644 --- a/lib/libalpm/handle.c +++ b/lib/libalpm/handle.c @@ -34,7 +34,6 @@ #include "alpm_list.h" #include "util.h" #include "log.h" -#include "trans.h" #include "alpm.h" #include "deps.h" @@ -74,7 +73,6 @@ void _alpm_handle_free(alpm_handle_t *handle) #endif /* free memory */ - _alpm_trans_free(handle->trans); FREE(handle->root); FREE(handle->dbpath); FREE(handle->dbext);