From nobody Sat Oct 25 21:42:49 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1521552672154505.3583660030929; Tue, 20 Mar 2018 06:31:12 -0700 (PDT) Received: from localhost ([::1]:48546 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eyHM7-0002jq-7H for importer@patchew.org; Tue, 20 Mar 2018 09:31:11 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52229) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eyDcY-0001v6-0b for qemu-devel@nongnu.org; Tue, 20 Mar 2018 05:31:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eyDcX-0004Am-3f for qemu-devel@nongnu.org; Tue, 20 Mar 2018 05:31:54 -0400 Received: from nyx.n621.de ([2a01:4f8:151:8ffd:2::1]:57725) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eyDcW-00048d-TO for qemu-devel@nongnu.org; Tue, 20 Mar 2018 05:31:53 -0400 From: Florian Larysch To: qemu-devel@nongnu.org Date: Tue, 20 Mar 2018 10:31:35 +0100 Message-Id: <20180320093135.26422-1-fl@n621.de> X-Mailer: git-send-email 2.16.2 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 2a01:4f8:151:8ffd:2::1 X-Mailman-Approved-At: Tue, 20 Mar 2018 09:27:42 -0400 Subject: [Qemu-devel] [PATCH] os: truncate pidfile on creation X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: sw@weilnetz.de, Florian Larysch Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" qemu_create_pidfile does not truncate the pidfile when it creates it, but rather overwrites its contents with the new pid. This works fine as long as the length of the pid doesn't decrease, but this might happen in case of wraparounds, causing pidfiles to contain trailing garbage which breaks operations such as 'kill $(cat pidfile)'. Instead, always truncate the file before writing it. Signed-off-by: Florian Larysch Reviewed-by: Eric Blake --- os-posix.c | 2 +- os-win32.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/os-posix.c b/os-posix.c index b9c2343b1e..9a6b874180 100644 --- a/os-posix.c +++ b/os-posix.c @@ -301,7 +301,7 @@ int qemu_create_pidfile(const char *filename) int len; int fd; =20 - fd =3D qemu_open(filename, O_RDWR | O_CREAT, 0600); + fd =3D qemu_open(filename, O_RDWR | O_CREAT | O_TRUNC, 0600); if (fd =3D=3D -1) { return -1; } diff --git a/os-win32.c b/os-win32.c index 586a7c7d49..85dbad7af8 100644 --- a/os-win32.c +++ b/os-win32.c @@ -108,7 +108,7 @@ int qemu_create_pidfile(const char *filename) memset(&overlap, 0, sizeof(overlap)); =20 file =3D CreateFile(filename, GENERIC_WRITE, FILE_SHARE_READ, NULL, - OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); =20 if (file =3D=3D INVALID_HANDLE_VALUE) { return -1; --=20 2.16.2