From f0b177197381359ff2cb1799640244817fd3b3db Mon Sep 17 00:00:00 2001 From: Joan Lledó Date: Sun, 24 Nov 2019 20:47:45 +0100 Subject: pci-arbiter: Fix memory bugs * pci-arbiter/pcifs.c: * init_file_system: Remove unnecessary free() * create_fs_tree: Fix a boundary overrun where no devices are found. Message-Id: <20191124194721.4982-2-jlledom@mailfence.com> --- pci-arbiter/pcifs.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pci-arbiter/pcifs.c b/pci-arbiter/pcifs.c index aaee7f0b..d19fc618 100644 --- a/pci-arbiter/pcifs.c +++ b/pci-arbiter/pcifs.c @@ -115,7 +115,6 @@ init_file_system (file_t underlying_node, struct pcifs * fs) fs->entries = calloc (1, sizeof (struct pcifs_dirent)); if (!fs->entries) { - free (fs->entries); return ENOMEM; } @@ -189,6 +188,12 @@ create_fs_tree (struct pcifs * fs) pci_iterator_destroy(iter); + if (nentries == 1) + { + /* No devices found, no need to continue */ + return 0; + } + list = realloc (fs->entries, nentries * sizeof (struct pcifs_dirent)); if (!list) return ENOMEM; -- cgit v1.2.3