libcdio.git - libcdio

index : libcdio.git
libcdio
summary refs log tree commit diff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/driver/gnu_linux.c 1
-rw-r--r--lib/driver/image/bincue.c 2
-rw-r--r--lib/driver/image/cdrdao.c 2
-rw-r--r--lib/driver/image/nrg.c 22
-rw-r--r--lib/iso9660/iso9660.c 3
-rw-r--r--lib/iso9660/iso9660_fs.c 12
-rw-r--r--lib/iso9660/rock.c 5
7 files changed, 31 insertions, 16 deletions
diff --git a/lib/driver/gnu_linux.c b/lib/driver/gnu_linux.c
index e7967397..7d84ff52 100644
--- a/lib/driver/gnu_linux.c
+++ b/lib/driver/gnu_linux.c
@@ -1581,7 +1581,6 @@ close_tray_linux (const char *psz_device)
cdio_info ("CDROM_DRIVE_STATUS failed: %s, trying anyway",
strerror(errno));
try_anyway:
- i_rc = DRIVER_OP_SUCCESS;
if((i_rc = ioctl(fd, CDROMCLOSETRAY)) != 0) {
cdio_warn ("ioctl CDROMCLOSETRAY failed: %s\n", strerror(errno));
i_rc = DRIVER_OP_ERROR;
diff --git a/lib/driver/image/bincue.c b/lib/driver/image/bincue.c
index 8c2ae7a4..35031515 100644
--- a/lib/driver/image/bincue.c
+++ b/lib/driver/image/bincue.c
@@ -212,7 +212,7 @@ _read_bincue (void *p_user_data, void *data, size_t size)
final_size += this_size;
memcpy (p, buf, this_size);
p += this_size;
- this_size = cdio_stream_read(p_env->gen.data_source, buf, rem, 1);
+ cdio_stream_read(p_env->gen.data_source, buf, rem, 1);
/* Skip over stuff at end of this sector and the beginning of the next.
*/
diff --git a/lib/driver/image/cdrdao.c b/lib/driver/image/cdrdao.c
index 3d961c37..2109fac0 100644
--- a/lib/driver/image/cdrdao.c
+++ b/lib/driver/image/cdrdao.c
@@ -219,7 +219,7 @@ _read_cdrdao (void *user_data, void *data, size_t size)
final_size += this_size;
memcpy (p, buf, this_size);
p += this_size;
- this_size = cdio_stream_read(this_track->data_source, buf, rem, 1);
+ cdio_stream_read(this_track->data_source, buf, rem, 1);
/* Skip over stuff at end of this sector and the beginning of the next.
*/
diff --git a/lib/driver/image/nrg.c b/lib/driver/image/nrg.c
index 8508499d..e79f6e30 100644
--- a/lib/driver/image/nrg.c
+++ b/lib/driver/image/nrg.c
@@ -247,16 +247,15 @@ parse_nrg (_img_private_t *p_env, const char *psz_nrg_name,
entries /= sizeof (_cuex_array_t);
if (CUES_ID == opcode) {
- lsn_t lsn = UINT32_FROM_BE (_entries[0].lsn);
unsigned int idx;
unsigned int i = 0;
-
- cdio_debug ("CUES type image detected" );
-
+ lsn_t lsn; /* = UINT32_FROM_BE (_entries[0].lsn); */
/* CUES LSN has 150 pregap include at beginning? -/
cdio_assert (lsn == 0?);
*/
+ cdio_debug ("CUES type image detected" );
+
p_env->is_cues = true; /* HACK alert. */
p_env->gen.i_tracks = 0;
p_env->gen.i_first_track = 1;
@@ -1271,12 +1270,15 @@ cdio_is_nrg(const char *psz_nrg)
_img_private_t *p_env = calloc(1, sizeof (_img_private_t));
bool is_nrg = false;
- if (psz_nrg == NULL) return false;
+ if (psz_nrg == NULL) {
+ is_nrg = false;
+ goto exit;
+ }
if (!(p_env->gen.data_source = cdio_stdio_new (psz_nrg))) {
cdio_warn ("can't open nrg image file %s for reading", psz_nrg);
- free(p_env);
- return false;
+ is_nrg = false;
+ goto exit;
}
if (parse_nrg(p_env, psz_nrg, CDIO_LOG_INFO)) {
@@ -1285,11 +1287,15 @@ cdio_is_nrg(const char *psz_nrg)
size_t psz_len;
psz_len = strlen(psz_nrg);
/* At least 4 characters needed for .nrg extension */
- if ( psz_len < 4 ) return false;
+ if ( psz_len < 4 ) {
+ is_nrg = false;
+ goto exit;
+ }
is_nrg = strncasecmp( psz_nrg+(psz_len-3), "nrg", 3 ) == 0;
#endif
}
+ exit:
_free_nrg(p_env);
return is_nrg;
}
diff --git a/lib/iso9660/iso9660.c b/lib/iso9660/iso9660.c
index 3f24f14f..7c55358a 100644
--- a/lib/iso9660/iso9660.c
+++ b/lib/iso9660/iso9660.c
@@ -786,7 +786,8 @@ iso9660_dir_add_entry_su(void *dir,
? strlen(filename) : 1); /* working hack! */
memcpy(&idr->filename.str[1], filename, from_711(idr->filename.len));
- memcpy(&dir8[offset] + su_offset, su_data, su_size);
+ if (su_size > 0 && su_data)
+ memcpy(&dir8[offset] + su_offset, su_data, su_size);
}
void
diff --git a/lib/iso9660/iso9660_fs.c b/lib/iso9660/iso9660_fs.c
index 0339b860..85ad2736 100644
--- a/lib/iso9660/iso9660_fs.c
+++ b/lib/iso9660/iso9660_fs.c
@@ -1141,7 +1141,10 @@ _fs_iso_stat_traverse (iso9660_t *p_iso, const iso9660_stat_t *_root,
}
ret = iso9660_iso_seek_read (p_iso, _dirbuf, _root->lsn, _root->secsize);
- if (ret!=ISO_BLOCKSIZE*_root->secsize) return NULL;
+ if (ret!=ISO_BLOCKSIZE*_root->secsize) {
+ free(_dirbuf);
+ return NULL;
+ }
while (offset < (_root->secsize * ISO_BLOCKSIZE))
{
@@ -1384,12 +1387,14 @@ iso9660_fs_readdir (CdIo_t *p_cdio, const char psz_path[])
if (!_dirbuf)
{
cdio_warn("Couldn't calloc(1, %d)", p_stat->secsize * ISO_BLOCKSIZE);
+ iso9660_stat_free(p_stat);
iso9660_dirlist_free(retval);
return NULL;
}
if (cdio_read_data_sectors (p_cdio, _dirbuf, p_stat->lsn,
ISO_BLOCKSIZE, p_stat->secsize)) {
+ iso9660_stat_free(p_stat);
iso9660_dirlist_free(retval);
return NULL;
}
@@ -1748,7 +1753,10 @@ iso_have_rr_traverse (iso9660_t *p_iso, const iso9660_stat_t *_root,
}
ret = iso9660_iso_seek_read (p_iso, _dirbuf, _root->lsn, _root->secsize);
- if (ret!=ISO_BLOCKSIZE*_root->secsize) return false;
+ if (ret!=ISO_BLOCKSIZE*_root->secsize) {
+ free(_dirbuf);
+ return false;
+ }
while (offset < (_root->secsize * ISO_BLOCKSIZE))
{
diff --git a/lib/iso9660/rock.c b/lib/iso9660/rock.c
index ab7be8b3..db15a2e0 100644
--- a/lib/iso9660/rock.c
+++ b/lib/iso9660/rock.c
@@ -422,8 +422,9 @@ parse_rock_ridge_stat_internal(iso9660_dir_t *p_iso9660_dir,
switch(p_sl->flags &~1){
case 0:
realloc_symlink(p_stat, p_sl->len);
- memcpy(&(p_stat->rr.psz_symlink[p_stat->rr.i_symlink]),
- p_sl->text, p_sl->len);
+ if (p_sl->text && p_sl->len)
+ memcpy(&(p_stat->rr.psz_symlink[p_stat->rr.i_symlink]),
+ p_sl->text, p_sl->len);
p_stat->rr.i_symlink += p_sl->len;
break;
case 4:
generated by cgit v1.2.3 (git 2.25.1) at 2025年10月04日 03:28:52 +0000

AltStyle によって変換されたページ (->オリジナル) /