[PATCH v2 00/28] fs/squashfs: fix memory leaks and introduce exists() function

Richard Genoud richard.genoud at posteo.net
Tue Nov 3 12:18:32 CET 2020


Le 03/11/2020 à 12:10, Richard Genoud a écrit :
> This patch series fix several memory leaks, some use of dangling
> pointers (leading to cpu freeze) and finally introduce the exists()
> function for squashfs.
> This function enable testing the existence of a file, which is mandatory
> for using the distro_bootcmd
> Those fixes have been cut into several patches to be easier to review
> 
> Changes since v1:
> - patch 5: *dir = *file = NULL; is split in 2 lines
Sorry, I forgot a change:
- in patch 15, I removed a sqfs_closedir(dirsp) that I forgot in v1

> - For consistency, sqfs_frag_lookup is modified to use a single "goto
>    out"
> ( cf https://lists.denx.de/pipermail/u-boot/2020-October/429645.html )
> - more memory leak fixes in sqfs_get_abs_path, sqfs_read and sqfs_probe
> - a missing error check typo in sqfs_get_abs_path
> - some missing reseting ctxt.sblk to NULL to prevent double free
> - reset cur_dev/cur_part_info to NULL when they are freed
> - return value of sqfs_decompressor_init() wasn't used
> - use "len" in sqfs_read to prevent writing beyond buffer
> - prevent reading with an offset since it doesn't work
> - prevent reading fragmented files since it doesn't work
> 
> Richard Genoud (28):
>    fs/squashfs: fix board hang-up when calling .exists()
>    fs/squashfs: sqfs_opendir: fix some memory leaks and dangling pointers
>    fs/squashfs: sqfs_opendir: simplify error handling
>    fs/squashfs: sqfs_closedir: fix memory leak
>    fs/squashfs: sqfs_split_path: fix memory leak and dangling pointers
>    fs/squashfs: sqfs_read_directory_table: fix memory leak
>    fs/squashfs: sqfs_search_dir: fix dangling pointer
>    fs/squashfs: sqfs_search_dir: fix memory leaks
>    fs/squashfs: sqfs_read_inode_table: fix dangling pointer
>    fs/squashfs: sqfs_concat_tokens: check if malloc succeeds
>    fs/squashfs: sqfs_size: fix dangling pointer dirs->entry
>    fs/squashfs: sqfs_size: remove useless sqfs_closedir()
>    fs/squashfs: sqfs_read: fix dangling pointer dirs->entry
>    fs/squashfs: sqfs_read: remove useless sqfs_closedir()
>    fs/squashfs: sqfs_read: fix memory leak
>    fs/squashfs: sqfs_read: fix another memory leak
>    fs/squashfs: sqfs_frag_lookup: simplify error handling
>    fs/squashfs: sqfs_get_abs_path: fix error check
>    fs/squashfs: sqfs_get_abs_path: fix possible memory leak on error
>    fs/squashfs: sqfs_read: fix memory leak on finfo.blk_sizes
>    fs/squashfs: sqfs_probe: fix possible memory leak on error
>    fs/squashfs: sqfs_close/sqfs_read_sblk: set ctxt.sblk to NULL after
>      free
>    fs/squashfs: sqfs_probe: reset cur_dev/cur_part_info to NULL on error
>    fs/squashfs: sqfs_probe: use sqfs_decompressor_init() return value
>    fs/squashfs: sqfs_read: don't write beyond buffer size
>    fs/squashfs: sqfs_read: remove buggy offset functionality
>    fs/squashfs: sqfs_read: fragmented files are not supported
>    fs/squashfs: implement exists() function
> 
>   fs/fs.c            |   7 +
>   fs/squashfs/sqfs.c | 399 +++++++++++++++++++++++++++++++--------------
>   include/squashfs.h |   1 +
>   3 files changed, 286 insertions(+), 121 deletions(-)
> 


More information about the U-Boot mailing list