From 65f41dc6b49cb2d8b7bb9e3951f6f4fcf5c93eee Mon Sep 17 00:00:00 2001 From: Zhiqiang Liu Date: Sun, 13 Jun 2021 18:25:14 +0800 Subject: [PATCH 16/28] blobfs: check return value of strdup in blobfs_fuse_start() In blobfs_fuse_start(), bfuse->bdev_name and bfuse->mountpoint are allocated by calling strdup(), which may return NULL. Here, we will go to err if strdup() returns NULL. Signed-off-by: Zhiqiang Liu Change-Id: I0599254b3436a310ddd26732312281f07a4972ec Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/8303 Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins Reviewed-by: Aleksey Marchuk Reviewed-by: Jim Harris Reviewed-by: Changpeng Liu --- module/blobfs/bdev/blobfs_fuse.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/module/blobfs/bdev/blobfs_fuse.c b/module/blobfs/bdev/blobfs_fuse.c index 1666549..176f81e 100644 --- a/module/blobfs/bdev/blobfs_fuse.c +++ b/module/blobfs/bdev/blobfs_fuse.c @@ -301,15 +301,19 @@ blobfs_fuse_start(const char *bdev_name, const char *mountpoint, struct spdk_fil return -ENOMEM; } - rc = fuse_parse_cmdline(&args, &opts); - assert(rc == 0); - bfuse->bdev_name = strdup(bdev_name); bfuse->mountpoint = strdup(mountpoint); + if (!bfuse->bdev_name || !bfuse->mountpoint) { + rc = -ENOMEM; + goto err; + } bfuse->fs = fs; bfuse->cb_fn = cb_fn; bfuse->cb_arg = cb_arg; + rc = fuse_parse_cmdline(&args, &opts); + assert(rc == 0); + fuse_handle = fuse_new(&args, &spdk_fuse_oper, sizeof(spdk_fuse_oper), NULL); fuse_opt_free_args(&args); if (fuse_handle == NULL) { -- 1.8.3.1