jffs2: fix a memleak in read_direntry()
Need to free the memory allocated for 'fd' if failed to read all of the remainder name. Signed-off-by: Wei Fang <fangwei1@huawei.com> Signed-off-by: Brian Norris <computersforpeace@gmail.com>
This commit is contained in:
parent
d54e88011d
commit
eb042ec359
|
@ -660,8 +660,12 @@ static inline int read_direntry(struct jffs2_sb_info *c, struct jffs2_raw_node_r
|
|||
|
||||
err = jffs2_flash_read(c, (ref_offset(ref)) + read,
|
||||
rd->nsize - already, &read, &fd->name[already]);
|
||||
if (unlikely(read != rd->nsize - already) && likely(!err))
|
||||
if (unlikely(read != rd->nsize - already) && likely(!err)) {
|
||||
jffs2_free_full_dirent(fd);
|
||||
JFFS2_ERROR("short read: wanted %d bytes, got %zd\n",
|
||||
rd->nsize - already, read);
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
if (unlikely(err)) {
|
||||
JFFS2_ERROR("read remainder of name: error %d\n", err);
|
||||
|
|
Loading…
Reference in New Issue