From nobody Sat Oct 25 08:50:08 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; dkim=fail; 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; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 152034316892949.73302531744355; Tue, 6 Mar 2018 05:32:48 -0800 (PST) Received: from localhost ([::1]:55764 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1etChy-0000s5-8p for importer@patchew.org; Tue, 06 Mar 2018 08:32:46 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48387) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1etCVv-0005iZ-6z for qemu-devel@nongnu.org; Tue, 06 Mar 2018 08:20:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1etCVt-0006k9-Fe for qemu-devel@nongnu.org; Tue, 06 Mar 2018 08:20:19 -0500 Received: from mail-wm0-x242.google.com ([2a00:1450:400c:c09::242]:38810) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1etCVt-0006ij-5X for qemu-devel@nongnu.org; Tue, 06 Mar 2018 08:20:17 -0500 Received: by mail-wm0-x242.google.com with SMTP id z9so22090600wmb.3 for ; Tue, 06 Mar 2018 05:20:17 -0800 (PST) Received: from 640k.lan (94-36-191-219.adsl-ull.clienti.tiscali.it. [94.36.191.219]) by smtp.gmail.com with ESMTPSA id l38sm25652538wrc.96.2018.03.06.05.20.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 06 Mar 2018 05:20:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=6ob20XI+EkHjTbRhUVxloR84w+duLaRCy7QP0BFOpXE=; b=kw6dZypcrnecPPzzJb66Rk6onaTQVh4QMx7t88yxKj7U55pCPu9pb0IzCuGhf3GgNO mG1uVjgQg043qcIjcL3pUi0vV0anpRQZY6yqsdg8N97XJotjgFtzh+3RPzd2ud0RJDmj KZkzo/BKufW4KDvuUT7sIdi0WhZbref5c9Mtip4EPsVBE9vAKsX9UnJfDFt6mboICQPH PhBERXAwmrbWERFKKcHQd60b9hZUJWo8iV594rqYm0g/fMYP7t2hZ3oUX8mKSMAgEwFc YRnuKHBPF21sTz3Xe1b/AsviZlGj5sEQr4Z2NqfGuBE3eFypiuhoXJ1RHOy+pjPdUSEV qxTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=6ob20XI+EkHjTbRhUVxloR84w+duLaRCy7QP0BFOpXE=; b=DbhoRwY7G/iNnJEGICaCQa2AbNP31L9lfe5h1NKhU/vEQkPUb4z5exGzA2nQr3vjHB GKhGEHdOX1Q0E0MLgtxqKg8DAqdYLTeiFu1+lY6DGzwDNNhde6jGNZkAqRfFqaIQvZT4 NmwpWLz64ZP7Rp6ov+ZCHZfmOQfhdbOwCpdlx46ng78/Xeq+OPH1J4Oe69deXfnReMKh q9P3bAYuQ6sXIS2YXgtre7U1c7JOSEW0vQhG0LDqN/AKonsceXJ7BU4Vh39wCXR1OIk4 EFoWOJgtCwI5B4yGU68W0p/BWF5On/lmrVorlxv9Q1b6Ckz1sgv5uOfEiSWtO20jq+pW i5NA== X-Gm-Message-State: AElRT7H9JUwuNhpz35M0eG9x21mSVFYAg7Dbr5nf93kMLUshAxn1uTJ6 X0GyiHNakbnQCXhAnagQ9WKoKOF4 X-Google-Smtp-Source: AG47ELtqVWNQSH+6MG/qJYfkVeeDbHdljqKMefwjXJLjGlqZBGgyXbAKM86ZVpzu9DyYNq0xO+oTYA== X-Received: by 10.28.239.8 with SMTP id n8mr11886702wmh.120.1520342415761; Tue, 06 Mar 2018 05:20:15 -0800 (PST) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 6 Mar 2018 14:19:30 +0100 Message-Id: <1520342370-123606-35-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1520342370-123606-1-git-send-email-pbonzini@redhat.com> References: <1520342370-123606-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::242 Subject: [Qemu-devel] [PULL 34/34] use g_path_get_basename instead of basename 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: Julia Suvorova Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 From: Julia Suvorova basename(3) and dirname(3) modify their argument and may return pointers to statically allocated memory which may be overwritten by subsequent calls. g_path_get_basename and g_path_get_dirname have no such issues, and therefore more preferable. Signed-off-by: Julia Suvorova Message-Id: <1519888086-4207-1-git-send-email-jusual@mail.ru> Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Cornelia Huck Signed-off-by: Paolo Bonzini --- fsdev/virtfs-proxy-helper.c | 15 +++++++++------ hw/s390x/s390-ccw.c | 2 +- hw/vfio/pci.c | 2 +- hw/vfio/platform.c | 2 +- qemu-io.c | 2 +- qga/commands-posix.c | 4 ++-- 6 files changed, 15 insertions(+), 12 deletions(-) diff --git a/fsdev/virtfs-proxy-helper.c b/fsdev/virtfs-proxy-helper.c index 8e48500..6f132c5 100644 --- a/fsdev/virtfs-proxy-helper.c +++ b/fsdev/virtfs-proxy-helper.c @@ -55,6 +55,7 @@ static struct option helper_opts[] =3D { =20 static bool is_daemon; static bool get_version; /* IOC getversion IOCTL supported */ +static char *prog_name; =20 static void GCC_FMT_ATTR(2, 3) do_log(int loglevel, const char *format, ..= .) { @@ -785,7 +786,7 @@ error: return -1; } =20 -static void usage(char *prog) +static void usage(void) { fprintf(stderr, "usage: %s\n" " -p|--path 9p path to export\n" @@ -795,7 +796,7 @@ static void usage(char *prog) " access to this socket\n" " \tNote: -s & -f can not be used together\n" " [-n|--nodaemon] Run as a normal program\n", - basename(prog)); + prog_name); } =20 static int process_reply(int sock, int type, @@ -1045,6 +1046,8 @@ int main(int argc, char **argv) struct statfs st_fs; #endif =20 + prog_name =3D g_path_get_basename(argv[0]); + is_daemon =3D true; sock =3D -1; own_u =3D own_g =3D -1; @@ -1077,7 +1080,7 @@ int main(int argc, char **argv) case '?': case 'h': default: - usage(argv[0]); + usage(); exit(EXIT_FAILURE); } } @@ -1085,13 +1088,13 @@ int main(int argc, char **argv) /* Parameter validation */ if ((sock_name =3D=3D NULL && sock =3D=3D -1) || rpath =3D=3D NULL) { fprintf(stderr, "socket, socket descriptor or path not specified\n= "); - usage(argv[0]); + usage(); return -1; } =20 if (sock_name && sock !=3D -1) { fprintf(stderr, "both named socket and socket descriptor specified= \n"); - usage(argv[0]); + usage(); exit(EXIT_FAILURE); } =20 @@ -1099,7 +1102,7 @@ int main(int argc, char **argv) fprintf(stderr, "owner uid:gid not specified, "); fprintf(stderr, "owner uid:gid specifies who can access the socket file\n"= ); - usage(argv[0]); + usage(); exit(EXIT_FAILURE); } =20 diff --git a/hw/s390x/s390-ccw.c b/hw/s390x/s390-ccw.c index 7fc1c60..214c940 100644 --- a/hw/s390x/s390-ccw.c +++ b/hw/s390x/s390-ccw.c @@ -48,7 +48,7 @@ static void s390_ccw_get_dev_info(S390CCWDevice *cdev, return; } =20 - cdev->mdevid =3D g_strdup(basename(dev_path)); + cdev->mdevid =3D g_path_get_basename(dev_path); =20 tmp =3D basename(dirname(dev_path)); if (sscanf(tmp, "%2x.%1x.%4x", &cssid, &ssid, &devid) !=3D 3) { diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 033cc8d..3ba3cbc 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -2807,7 +2807,7 @@ static void vfio_realize(PCIDevice *pdev, Error **err= p) return; } =20 - vdev->vbasedev.name =3D g_strdup(basename(vdev->vbasedev.sysfsdev)); + vdev->vbasedev.name =3D g_path_get_basename(vdev->vbasedev.sysfsdev); vdev->vbasedev.ops =3D &vfio_pci_ops; vdev->vbasedev.type =3D VFIO_DEVICE_TYPE_PCI; vdev->vbasedev.dev =3D &vdev->pdev.qdev; diff --git a/hw/vfio/platform.c b/hw/vfio/platform.c index 0d4bc0a..5c921c2 100644 --- a/hw/vfio/platform.c +++ b/hw/vfio/platform.c @@ -561,7 +561,7 @@ static int vfio_base_device_init(VFIODevice *vbasedev, = Error **errp) /* @sysfsdev takes precedence over @host */ if (vbasedev->sysfsdev) { g_free(vbasedev->name); - vbasedev->name =3D g_strdup(basename(vbasedev->sysfsdev)); + vbasedev->name =3D g_path_get_basename(vbasedev->sysfsdev); } else { if (!vbasedev->name || strchr(vbasedev->name, '/')) { error_setg(errp, "wrong host device name"); diff --git a/qemu-io.c b/qemu-io.c index 2c00ea0..160fb2a 100644 --- a/qemu-io.c +++ b/qemu-io.c @@ -504,7 +504,7 @@ int main(int argc, char **argv) #endif =20 module_call_init(MODULE_INIT_TRACE); - progname =3D basename(argv[0]); + progname =3D g_path_get_basename(argv[0]); qemu_init_exec_dir(argv[0]); =20 qcrypto_init(&error_fatal); diff --git a/qga/commands-posix.c b/qga/commands-posix.c index ac17d0d..0dc219d 100644 --- a/qga/commands-posix.c +++ b/qga/commands-posix.c @@ -808,7 +808,7 @@ static char *get_pci_driver(char const *syspath, int pa= thlen, Error **errp) len =3D readlink(dpath, buf, sizeof(buf) - 1); if (len !=3D -1) { buf[len] =3D 0; - driver =3D g_strdup(basename(buf)); + driver =3D g_path_get_basename(buf); } g_free(dpath); g_free(path); @@ -1053,7 +1053,7 @@ static void build_guest_fsinfo_for_device(char const = *devpath, } =20 if (!fs->name) { - fs->name =3D g_strdup(basename(syspath)); + fs->name =3D g_path_get_basename(syspath); } =20 g_debug(" parse sysfs path '%s'", syspath); --=20 1.8.3.1