diff options
author | Wenchao Hao <haowenchao@huawei.com> | 2020-11-24 16:51:21 +0800 |
---|---|---|
committer | Wenchao Hao <haowenchao@huawei.com> | 2020-12-12 11:44:08 +0800 |
commit | 67c757749b91efa26352316a6077eab9ceb9a0bd (patch) | |
tree | 81958c8f187fcb2ad8b07e3a4a54f4fc8cf39878 /utils | |
parent | caa45e53c9ba163238deae6a3c5f81b33e5be4a7 (diff) | |
download | open-iscsi-67c757749b91efa26352316a6077eab9ceb9a0bd.tar.gz |
open-iscsi: Fix invalid pointer deference in find_initiator()
If calloc() returns NULL just return ENOMEM;
if strdup() returns NULL we should free dev and return errno.
Signed-off-by: Wenchao Hao <haowenchao@huawei.com>
Signed-off-by: Zhiqiang Liu <liuzhiqiang26@huawei.com>
Diffstat (limited to 'utils')
-rw-r--r-- | utils/fwparam_ibft/fwparam_ppc.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/utils/fwparam_ibft/fwparam_ppc.c b/utils/fwparam_ibft/fwparam_ppc.c index 429d45c..b5eaa00 100644 --- a/utils/fwparam_ibft/fwparam_ppc.c +++ b/utils/fwparam_ibft/fwparam_ppc.c @@ -332,9 +332,16 @@ static int find_initiator(const char *fpath, const struct stat *sb, int tflag, "/aliases/iscsi-disk"))) { if (dev_count < OFWDEV_MAX) { - ofwdevs[dev_count++] = dev = - calloc(sizeof(struct ofw_dev), 1); + dev = calloc(sizeof(struct ofw_dev), 1); + if (!dev) + return -ENOMEM; + dev->prop_path = strdup(fpath + devtree_offset); + if (!dev->prop_path) { + free(dev); + return errno; + } + ofwdevs[dev_count++] = dev; } } return 0; |