From nobody Fri Dec 27 02:18:27 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1731333399272771.5581808233653; Mon, 11 Nov 2024 05:56:39 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id 54C62192C; Mon, 11 Nov 2024 08:56:38 -0500 (EST) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id D69691952; Mon, 11 Nov 2024 08:56:04 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id 9C2F1181C; Mon, 11 Nov 2024 08:56:01 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 213BE17F9 for ; Mon, 11 Nov 2024 08:56:01 -0500 (EST) Received: from mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-252-PdCdGfQyOmuuWQMNwICrxw-1; Mon, 11 Nov 2024 08:55:58 -0500 Received: from mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.40]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 5A2C719541A1 for ; Mon, 11 Nov 2024 13:55:57 +0000 (UTC) Received: from moe.brq.redhat.com (unknown [10.43.3.236]) by mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 9698C1955E93 for ; Mon, 11 Nov 2024 13:55:56 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1731333360; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=EY5sKavKFOpShyNX2RudThbJd6cfDe+N9b9L1iO6/+k=; b=Zmskl4s2v9Fl9D5m2HuBc4R5rQ0DJX9wHkYtSwDcnf1z/qh/Qmbyeu/POILEh4PJqZKJly paT0vnmZIAy9ggjVEw6o0g2OG9gaPcsI7uUDI3ZtE5UUl3RPs6MuKzwYbRJPjXa1wYz5/m MQ6ta8fd4QS8XeGt5Df6ZLY8oX2s/Ec= X-MC-Unique: PdCdGfQyOmuuWQMNwICrxw-1 X-Mimecast-MFC-AGG-ID: PdCdGfQyOmuuWQMNwICrxw From: Michal Privoznik To: devel@lists.libvirt.org Subject: [PATCH 1/2] ch_monitor: Avoid possible double free in virCHMonitorClose() Date: Mon, 11 Nov 2024 14:55:52 +0100 Message-ID: <7ba90b37da92b8d44a732f73a7dad49fcfb04145.1731333323.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.40 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: XDRAJf--F0IUPK0Xg8Nv7XRazeGx6rN8ZRXz2BzYO9Q_1731333357 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: ABJRLYGBLTVGOSKBJPO2FNG2UX3O3SWR X-Message-ID-Hash: ABJRLYGBLTVGOSKBJPO2FNG2UX3O3SWR X-MailFrom: mprivozn@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1731333400516116600 Content-Type: text/plain; charset="utf-8"; x-default="true" The virCHMonitorClose() is meant to be called when monitor to cloud-hypervisor process closes. It removes the socket and frees string containing path to the socket. In general, there is a problem with the following pattern: if (var) { do_something(); g_free(var); } because if the pattern executes twice the variable is freed twice. That's why we have VIR_FREE() macro. Well, replace plain g_free() with g_clear_pointer(). Mind you, this is NOT a destructor where clearing pointers is needless. Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- src/ch/ch_monitor.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ch/ch_monitor.c b/src/ch/ch_monitor.c index ccd04cfbd1..18ca5a764e 100644 --- a/src/ch/ch_monitor.c +++ b/src/ch/ch_monitor.c @@ -626,7 +626,7 @@ void virCHMonitorClose(virCHMonitor *mon) VIR_WARN("Unable to remove CH socket file '%s'", mon->socketpath); } - g_free(mon->socketpath); + g_clear_pointer(&mon->socketpath, g_free); } =20 virObjectUnref(mon); --=20 2.45.2 From nobody Fri Dec 27 02:18:27 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1731333418977656.274376550408; Mon, 11 Nov 2024 05:56:58 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id EFD1E18B0; Mon, 11 Nov 2024 08:56:57 -0500 (EST) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 188C61955; Mon, 11 Nov 2024 08:56:05 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id 2CB1C181C; Mon, 11 Nov 2024 08:56:02 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 27564177C for ; Mon, 11 Nov 2024 08:56:01 -0500 (EST) Received: from mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-27-kn57QbFDOBObwaGvvnZxNw-1; Mon, 11 Nov 2024 08:55:59 -0500 Received: from mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.40]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 7685A195395B for ; Mon, 11 Nov 2024 13:55:58 +0000 (UTC) Received: from moe.brq.redhat.com (unknown [10.43.3.236]) by mx-prod-int-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id C0DC81956054 for ; Mon, 11 Nov 2024 13:55:57 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1731333360; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=usSZjkcOhSoenFt1lcOyY72tO25SNe2KceX5q2GGWnY=; b=etmskxyqF8GKyeu8KnKMdJ7SUA1b9ep6uktByAriAdUeCDaS58VwP9JKZyh6iBkD394V5+ 8z/IN6bE/KnssOkYKhSR5H/jDn04doqm+WqOIwBprNW/l7PIOptSDBI7eWnvzdE7Nl8rn9 p+7KgHbDKEtqKyBIWvw7ImoU/8mqIyQ= X-MC-Unique: kn57QbFDOBObwaGvvnZxNw-1 X-Mimecast-MFC-AGG-ID: kn57QbFDOBObwaGvvnZxNw From: Michal Privoznik To: devel@lists.libvirt.org Subject: [PATCH 2/2] ch_monitor: Report OS error when removing socket fails Date: Mon, 11 Nov 2024 14:55:53 +0100 Message-ID: <95d356ebc9a98505dcf02402eeb01af174dd68e0.1731333323.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.40 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: HJTJpJwpbrJ_JtXp4YEOSV8asAoBouUiPOnY-BVnq5g_1731333358 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 6Y4DI3B4NS2QIPAEYAXEII75MT7M3GNE X-Message-ID-Hash: 6Y4DI3B4NS2QIPAEYAXEII75MT7M3GNE X-MailFrom: mprivozn@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1731333420664116600 Content-Type: text/plain; charset="utf-8"; x-default="true" When removing a socket in virCHMonitorClose() fails, a warning is printed. But it doesn't contain errno nor g_strerror() which may shed more light into why removing of the socket failed. Oh, and since virCHMonitorClose() is registered as autoptr cleanup for virCHMonitor() it may happen that virCHMonitorClose() is called with mon->socketpath allocated but file not existing yet (see virCHMonitorNew()). Thus ignore ENOENT and do not print warning in that case - the file doesn't exist anyways. Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- src/ch/ch_monitor.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/ch/ch_monitor.c b/src/ch/ch_monitor.c index 18ca5a764e..935239a721 100644 --- a/src/ch/ch_monitor.c +++ b/src/ch/ch_monitor.c @@ -622,9 +622,10 @@ void virCHMonitorClose(virCHMonitor *mon) curl_easy_cleanup(mon->handle); =20 if (mon->socketpath) { - if (virFileRemove(mon->socketpath, -1, -1) < 0) { - VIR_WARN("Unable to remove CH socket file '%s'", - mon->socketpath); + if (virFileRemove(mon->socketpath, -1, -1) < 0 && + errno !=3D ENOENT) { + VIR_WARN("Unable to remove CH socket file '%s': %s", + mon->socketpath, g_strerror(errno)); } g_clear_pointer(&mon->socketpath, g_free); } --=20 2.45.2