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:
rocky
2012-01-16 19:35:14 -05:00
parent 2fb322806f
commit a3fdd2f453
2 changed files with 8 additions and 2 deletions

View File

@@ -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);
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))
{
@@ -1420,6 +1424,7 @@ iso9660_ifs_readdir (iso9660_t *p_iso, const char psz_path[])
return NULL;
}
free (p_stat->rr.psz_symlink);
free (p_stat);
return retval;
}

View File

@@ -404,6 +404,7 @@ udf_open (const char *psz_path)
return p_udf;
error:
cdio_stdio_destroy(p_udf->stream);
free(p_udf);
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
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_get_root (udf_t *p_udf, bool b_any_partition, partition_num_t i_partition)