From patchwork Mon Feb 3 10:00:42 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chen Gang X-Patchwork-Id: 316113 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 376F32C0099 for ; Mon, 3 Feb 2014 21:01:23 +1100 (EST) Received: from localhost ([::1]:45313 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WAGLB-0005tR-6E for incoming@patchwork.ozlabs.org; Mon, 03 Feb 2014 05:01:21 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44689) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WAGKg-0005lf-7q for qemu-devel@nongnu.org; Mon, 03 Feb 2014 05:00:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WAGKX-0004Kt-O0 for qemu-devel@nongnu.org; Mon, 03 Feb 2014 05:00:50 -0500 Received: from mail-pd0-x22b.google.com ([2607:f8b0:400e:c02::22b]:32789) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WAGKX-0004KL-Gw for qemu-devel@nongnu.org; Mon, 03 Feb 2014 05:00:41 -0500 Received: by mail-pd0-f171.google.com with SMTP id g10so6665818pdj.30 for ; Mon, 03 Feb 2014 02:00:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:cc:subject :content-type:content-transfer-encoding; bh=+aYfTGYnD5T3htmQY5Kas2BBI5AW+mDCl7qIilUga+w=; b=pRlndmYS0VWty+ChKfca8whe7nY8NUq8jjZK8QkK5434Sbdemw4t9lu3i8hvFLvKwh 1GiMqrfMNgCwnbrKHQehViEwYZs0WyXXe6OI0iuyVMl206h1OVF2iPVzaZJM6jyAoVnr uRh7KoWmUcmKHzzlaIb/2bOh4XytAlG1Ht4m2kccGEykA6LHkYrbg+6yvyMdeAKth50A nWLivoOdp58X9G3Cx7gmaWMpq85mq4thbAGix6hkbebUfTcDdWpHYR60P0GpZ8m80+hm MfH1NK3AZuDuASJGew5kZlbKCJefPkfV+9DlTTedPbDtecg2p0KsVCH4pL6/iITwTZ28 SyNg== X-Received: by 10.68.211.1 with SMTP id my1mr36609765pbc.55.1391421639697; Mon, 03 Feb 2014 02:00:39 -0800 (PST) Received: from [192.168.1.100] ([223.72.65.10]) by mx.google.com with ESMTPSA id ac5sm24926240pbc.37.2014.02.03.02.00.38 for (version=TLSv1 cipher=RC4-SHA bits=128/128); Mon, 03 Feb 2014 02:00:39 -0800 (PST) Message-ID: <52EF68CA.9060604@gmail.com> Date: Mon, 03 Feb 2014 18:00:42 +0800 From: Chen Gang User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130625 Thunderbird/17.0.7 MIME-Version: 1.0 To: aliguori@amazon.com, aneesh.kumar@linux.vnet.ibm.com X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2607:f8b0:400e:c02::22b Cc: QEMU Developers Subject: [Qemu-devel] [PATCH] hw/9pfs/virtio-9p-local.c: use snprintf() instead of sprintf() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org We can not assume "'path' + 'ctx->fs_root'" must be less than MAX_PATH, so need use snprintf() instead of sprintf(). And also recommend to use ARRAY_SIZE instead of hard code macro for an array size in snprintf(). Signed-off-by: Chen Gang --- hw/9pfs/virtio-9p-local.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) */ if (S_ISDIR(stbuf.st_mode)) { - sprintf(buffer, "%s/%s/%s", ctx->fs_root, path, VIRTFS_META_DIR); + snprintf(buffer, ARRAY_SIZE(buffer), "%s/%s/%s", + ctx->fs_root, path, VIRTFS_META_DIR); err = remove(buffer); if (err < 0 && errno != ENOENT) { /* @@ -1033,8 +1034,8 @@ static int local_unlinkat(FsContext *ctx, V9fsPath *dir, * If directory remove .virtfs_metadata contained in the * directory */ - sprintf(buffer, "%s/%s/%s", ctx->fs_root, - fullname.data, VIRTFS_META_DIR); + snprintf(buffer, ARRAY_SIZE(buffer), "%s/%s/%s", ctx->fs_root, + fullname.data, VIRTFS_META_DIR); ret = remove(buffer); if (ret < 0 && errno != ENOENT) { /* diff --git a/hw/9pfs/virtio-9p-local.c b/hw/9pfs/virtio-9p-local.c index fc93e9e..44a0380 100644 --- a/hw/9pfs/virtio-9p-local.c +++ b/hw/9pfs/virtio-9p-local.c @@ -159,7 +159,7 @@ static int local_create_mapped_attr_dir(FsContext *ctx, const char *path) char attr_dir[PATH_MAX]; char *tmp_path = g_strdup(path); - snprintf(attr_dir, PATH_MAX, "%s/%s/%s", + snprintf(attr_dir, ARRAY_SIZE(attr_dir), "%s/%s/%s", ctx->fs_root, dirname(tmp_path), VIRTFS_META_DIR); err = mkdir(attr_dir, 0700); @@ -898,7 +898,8 @@ static int local_remove(FsContext *ctx, const char *path) * directory