Changeset 7bdedb5 in mainline


Ignore:
Timestamp:
2018-12-21T16:35:43Z (5 years ago)
Author:
Maurizio Lombardi <mlombard@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
a49c39c8
Parents:
4a33845
Message:

libext4: fix double free in case ext4_filesystem_open() fails.

I hit an assert in free() when opening an invalid ext4 filesystem,
this was due to a bug in ext4_filesystem_open().
In case of error, it called ext4_filesystem_fini() against an
uninitialized filesystem instance.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ext4/src/filesystem.c

    r4a33845 r7bdedb5  
    421421    enum cache_mode cmode, aoff64_t *size, ext4_filesystem_t **rfs)
    422422{
     423        int fs_inited = 0;
    423424        ext4_filesystem_t *fs = NULL;
    424425        fs_node_t *root_node = NULL;
     
    437438        if (rc != EOK)
    438439                goto error;
     440
     441        fs_inited = 1;
    439442
    440443        /* Read root node */
     
    463466                ext4_node_put(root_node);
    464467
    465         if (fs != NULL) {
     468        if (fs_inited)
    466469                ext4_filesystem_fini(fs);
    467                 free(fs);
    468         }
    469 
     470        free(fs);
    470471        return rc;
    471472}
Note: See TracChangeset for help on using the changeset viewer.