]> git.sesse.net Git - vlc/blobdiff - modules/access/vcd/cdrom.c
A couple more obvious missing (int64_t) cast fixes.
[vlc] / modules / access / vcd / cdrom.c
index c132288a5dd8ecd2d7f25767b157ceebdee6ff4d..a8d0f4dfeae097fdcb0f7c610cfe7c821c2c010d 100644 (file)
@@ -32,6 +32,7 @@
 
 #include <vlc_common.h>
 #include <vlc_access.h>
+#include <limits.h>
 
 #ifdef HAVE_UNISTD_H
 #   include <unistd.h>
@@ -57,7 +58,7 @@
 #   include <IOKit/storage/IOCDMedia.h>
 #   include <IOKit/storage/IOCDMediaBSDClient.h>
 #elif defined( HAVE_SCSIREQ_IN_SYS_SCSIIO_H )
-#   include <sys/inttypes.h>
+#   include <inttypes.h>
 #   include <sys/cdio.h>
 #   include <sys/scsiio.h>
 #elif defined( HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H )
@@ -208,7 +209,7 @@ int ioctl_GetTracksMap( vlc_object_t *p_this, const vcddev_t *p_vcddev,
 
         if( pp_sectors )
         {
-            *pp_sectors = malloc( (i_tracks + 1) * sizeof(**pp_sectors) );
+            *pp_sectors = calloc( i_tracks + 1, sizeof(**pp_sectors) );
             if( *pp_sectors == NULL )
                 return 0;
             memcpy( *pp_sectors, p_vcddev->p_sectors,
@@ -244,7 +245,7 @@ int ioctl_GetTracksMap( vlc_object_t *p_this, const vcddev_t *p_vcddev,
             CDTOCDescriptor *pTrackDescriptors;
             u_char track;
 
-            *pp_sectors = malloc( (i_tracks + 1) * sizeof(**pp_sectors) );
+            *pp_sectors = calloc( i_tracks + 1, sizeof(**pp_sectors) );
             if( *pp_sectors == NULL )
             {
                 darwin_freeTOC( pTOC );
@@ -349,7 +350,7 @@ int ioctl_GetTracksMap( vlc_object_t *p_this, const vcddev_t *p_vcddev,
                               ((unsigned int)p_tocheader[1] << 8);
 
                 p_fulltoc = malloc( i_toclength );
-                *pp_sectors = malloc( (i_tracks + 1) * sizeof(**pp_sectors) );
+                *pp_sectors = calloc( i_tracks + 1, sizeof(**pp_sectors) );
 
                 if( *pp_sectors == NULL || p_fulltoc == NULL )
                 {
@@ -415,7 +416,7 @@ int ioctl_GetTracksMap( vlc_object_t *p_this, const vcddev_t *p_vcddev,
             {
                 int i;
 
-                *pp_sectors = malloc( (i_tracks + 1) * sizeof(**pp_sectors) );
+                *pp_sectors = calloc( i_tracks + 1, sizeof(**pp_sectors) );
                 if( *pp_sectors == NULL )
                     return 0;
 
@@ -448,7 +449,7 @@ int ioctl_GetTracksMap( vlc_object_t *p_this, const vcddev_t *p_vcddev,
         {
              int i;
 
-             *pp_sectors = malloc( (i_tracks + 1) * sizeof(**pp_sectors) );
+             *pp_sectors = calloc( i_tracks + 1, sizeof(**pp_sectors) );
              if( *pp_sectors == NULL )
                  return 0;
 
@@ -503,7 +504,7 @@ int ioctl_GetTracksMap( vlc_object_t *p_this, const vcddev_t *p_vcddev,
         {
             int i;
 
-            *pp_sectors = malloc( (i_tracks + 1) * sizeof(**pp_sectors) );
+            *pp_sectors = calloc( i_tracks + 1, sizeof(**pp_sectors) );
             if( *pp_sectors == NULL )
                 return 0;
 
@@ -723,7 +724,7 @@ int ioctl_ReadSectors( vlc_object_t *p_this, const vcddev_t *p_vcddev,
         sc.flags = SCCMD_READ;
         sc.timeout = 10000;
 
-        i_ret = ioctl( i_fd, SCIOCCOMMAND, &sc );
+        i_ret = ioctl( p_vcddev->i_device_handle, SCIOCCOMMAND, &sc );
         if( i_ret == -1 )
         {
             msg_Err( p_this, "SCIOCCOMMAND failed" );
@@ -914,7 +915,7 @@ static int OpenVCDImage( vlc_object_t * p_this, const char *psz_dev,
      * about the cuefile */
     size_t i_tracks = 0;
 
-    while( fgets( line, 1024, cuefile ) )
+    while( fgets( line, 1024, cuefile ) && i_tracks < INT_MAX-1 )
     {
         /* look for a TRACK line */
         char psz_dummy[9];
@@ -930,7 +931,7 @@ static int OpenVCDImage( vlc_object_t * p_this, const char *psz_dev,
                          &i_min, &i_sec, &i_frame ) != 4) || (i_num != 1) )
                 continue;
 
-            int *buf = realloc (p_sectors, (i_tracks + 1) * sizeof (int));
+            int *buf = realloc (p_sectors, (i_tracks + 1) * sizeof (*buf));
             if (buf == NULL)
                 goto error;
             p_sectors = buf;
@@ -943,7 +944,7 @@ static int OpenVCDImage( vlc_object_t * p_this, const char *psz_dev,
     }
 
     /* fill in the last entry */
-    int *buf = realloc (p_sectors, (i_tracks + 1) * sizeof (int));
+    int *buf = realloc (p_sectors, (i_tracks + 1) * sizeof (*buf));
     if (buf == NULL)
         goto error;
     p_sectors = buf;
@@ -1326,9 +1327,14 @@ static int CdTextParse( vlc_meta_t ***ppp_tracks, int *pi_tracks,
 
     for( int j = 0; j < 0x10; j++ )
     {
-        const char *psz_default = pppsz_info[0][j];
         for( int i = 0; i <= i_track_last; i++ )
         {
+            /* */
+            if( pppsz_info[i][j] )
+                EnsureUTF8( pppsz_info[i][j] );
+
+            /* */
+            const char *psz_default = pppsz_info[0][j];
             const char *psz_value = pppsz_info[i][j];
 
             if( !psz_value && !psz_default )
@@ -1356,13 +1362,16 @@ static int CdTextParse( vlc_meta_t ***ppp_tracks, int *pi_tracks,
                 }
                 break;
             case 0x01: /* Performer */
-                vlc_meta_SetArtist( p_track, psz_value ?: psz_default );
+                vlc_meta_SetArtist( p_track,
+                                    psz_value ? psz_value : psz_default );
                 break;
             case 0x05: /* Messages */
-                vlc_meta_SetDescription( p_track, psz_value ?: psz_default );
+                vlc_meta_SetDescription( p_track,
+                                         psz_value ? psz_value : psz_default );
                 break;
             case 0x07: /* Genre */
-                vlc_meta_SetGenre( p_track, psz_value ?: psz_default );
+                vlc_meta_SetGenre( p_track,
+                                   psz_value ? psz_value : psz_default );
                 break;
             /* FIXME unsupported:
              * 0x02: songwriter