Plug memory leak in iso9660_ifs_readdir() and udf_open().
Patches from Pete Batard. See libcdio_devel from Jan 16, 2012.
This commit is contained in:
@@ -1390,7 +1390,11 @@ iso9660_ifs_readdir (iso9660_t *p_iso, const char psz_path[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
ret = iso9660_iso_seek_read (p_iso, _dirbuf, p_stat->lsn, p_stat->secsize);
|
ret = iso9660_iso_seek_read (p_iso, _dirbuf, p_stat->lsn, p_stat->secsize);
|
||||||
if (ret != ISO_BLOCKSIZE*p_stat->secsize) return NULL;
|
if (ret != ISO_BLOCKSIZE*p_stat->secsize)
|
||||||
|
{
|
||||||
|
free (_dirbuf);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
while (offset < (p_stat->secsize * ISO_BLOCKSIZE))
|
while (offset < (p_stat->secsize * ISO_BLOCKSIZE))
|
||||||
{
|
{
|
||||||
@@ -1420,6 +1424,7 @@ iso9660_ifs_readdir (iso9660_t *p_iso, const char psz_path[])
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free (p_stat->rr.psz_symlink);
|
||||||
free (p_stat);
|
free (p_stat);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -404,6 +404,7 @@ udf_open (const char *psz_path)
|
|||||||
return p_udf;
|
return p_udf;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
|
cdio_stdio_destroy(p_udf->stream);
|
||||||
free(p_udf);
|
free(p_udf);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@@ -473,7 +474,7 @@ udf_get_volumeset_id(udf_t *p_udf, /*out*/ uint8_t *volsetid,
|
|||||||
NULL is returned if the partition is not found or a root is not found or
|
NULL is returned if the partition is not found or a root is not found or
|
||||||
there is on error.
|
there is on error.
|
||||||
|
|
||||||
Caller must free result - use udf_file_free for that.
|
Caller must free result - use udf_dirent_free for that.
|
||||||
*/
|
*/
|
||||||
udf_dirent_t *
|
udf_dirent_t *
|
||||||
udf_get_root (udf_t *p_udf, bool b_any_partition, partition_num_t i_partition)
|
udf_get_root (udf_t *p_udf, bool b_any_partition, partition_num_t i_partition)
|
||||||
|
|||||||
Reference in New Issue
Block a user