diff options
author | Oliver O'Halloran <oohall@gmail.com> | 2017-05-26 14:07:48 +1000 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2017-05-26 16:00:18 +1000 |
commit | 25e42bad1f29384526d4ac1ad43dbd53505a687b (patch) | |
tree | 38d995316b5f73de747b1dab24660b20097c78ff | |
parent | 41dc3eb4495c451a405974570f604622a3f829ef (diff) | |
download | skiboot-25e42bad1f29384526d4ac1ad43dbd53505a687b.zip skiboot-25e42bad1f29384526d4ac1ad43dbd53505a687b.tar.gz skiboot-25e42bad1f29384526d4ac1ad43dbd53505a687b.tar.bz2 |
libflash: Initialise entries list earlier
In the bail-out path we call ffs_close() to tear down the partially
initialised ffs_handle. ffs_close() expects the entries list to be
initialised so we need to do that earlier to prevent a null pointer
dereference.
Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
-rw-r--r-- | libflash/libffs.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/libflash/libffs.c b/libflash/libffs.c index dca4018..763e061 100644 --- a/libflash/libffs.c +++ b/libflash/libffs.c @@ -256,6 +256,7 @@ int ffs_init(uint32_t offset, uint32_t max_size, struct blocklevel_device *bl, f->toc_offset = offset; f->max_size = max_size; f->bl = bl; + list_head_init(&f->hdr.entries); /* Convert and check flash header */ rc = ffs_check_convert_header(&f->hdr, &raw_hdr); @@ -298,7 +299,6 @@ int ffs_init(uint32_t offset, uint32_t max_size, struct blocklevel_device *bl, goto out; } - list_head_init(&f->hdr.entries); for (i = 0; i < be32_to_cpu(raw_hdr.entry_count); i++) { struct ffs_entry *ent = calloc(1, sizeof(struct ffs_entry)); if (!ent) { |