File sec-001.diff of Package xine-lib

diff -r a3ad06e2320f -r 30eb014e9b32 misc/cdda_server.c
--- a/misc/cdda_server.c	Tue Dec 09 22:02:13 2008 +0000
+++ b/misc/cdda_server.c	Thu Aug 21 00:18:00 2008 +0000
@@ -480,6 +480,12 @@
 
         sscanf(cmd,"%*s %d %d", &start_frame, &num_frames);
 
+        if (num_frames > INT_MAX / CD_RAW_FRAME_SIZE)
+        {
+          printf ("fatal error: integer overflow\n");
+          exit (1);
+        }
+
         n = num_frames * CD_RAW_FRAME_SIZE;
         buf = malloc( n );
         if( !buf )
@@ -556,6 +562,11 @@
         char *buf;
 
         sscanf(cmd,"%*s %d %d", &blocks, &flags);
+        if (blocks > INT_MAX / DVD_BLOCK_SIZE)
+        {
+          printf ("fatal error: integer overflow\n");
+          exit (1);
+        }
 
         n = blocks * DVD_BLOCK_SIZE;
         buf = malloc( n );
diff -r a3ad06e2320f -r 30eb014e9b32 src/combined/ffmpeg/ff_audio_decoder.c
--- a/src/combined/ffmpeg/ff_audio_decoder.c	Tue Dec 09 22:02:13 2008 +0000
+++ b/src/combined/ffmpeg/ff_audio_decoder.c	Thu Aug 21 00:18:00 2008 +0000
@@ -249,6 +249,8 @@
 
               if (extradata + data_len > this->size)
                 break; /* abort early - extradata length is bad */
+              if (extradata > INT_MAX - data_len)
+                break;/*integer overflow*/
 
 	      this->context->extradata_size = data_len;
 	      this->context->extradata      = malloc(this->context->extradata_size +
openSUSE Build Service is sponsored by