From mboxrd@z Thu Jan 1 00:00:00 1970 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) Message-ID: <52EF68CA.9060604@gmail.com> Date: Mon, 03 Feb 2014 18:00:42 +0800 From: Chen Gang MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] [PATCH] hw/9pfs/virtio-9p-local.c: use snprintf() instead of sprintf() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: aliguori@amazon.com, aneesh.kumar@linux.vnet.ibm.com Cc: QEMU Developers 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(-) 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 */ 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) { /* -- 1.7.11.7