[CVE-2018-10393] heap buffer overflow 72/180372/1
authorSejun Park <sejun79.park@samsung.com>
Tue, 29 May 2018 00:49:33 +0000 (09:49 +0900)
committerSejun Park <sejun79.park@samsung.com>
Tue, 29 May 2018 00:49:33 +0000 (09:49 +0900)
Change-Id: I976da227a735780b01441f016c53b5f8ab4b9364

lib/codec_internal.h
lib/mapping0.c

index de1bcca..fab58d5 100644 (file)
@@ -27,6 +27,7 @@
 #define BLOCKTYPE_LONG       1
 
 #define PACKETBLOBS 15
+#define MAX_CHANNEL 8
 
 typedef struct vorbis_block_internal{
   float  **pcmdelay;  /* this is a pointer into local storage */
index 7d279a8..a4c0f6d 100644 (file)
@@ -244,6 +244,8 @@ static int mapping0_forward(vorbis_block *vb){
   int                    n=vb->pcmend;
   int i,j,k;
 
+  if (vi->channels > MAX_CHANNEL || vi->channels < 0) return -1;
+
   int    *nonzero    = alloca(sizeof(*nonzero)*vi->channels);
   float  **gmdct     = _vorbis_block_alloc(vb,vi->channels*sizeof(*gmdct));
   int    **iwork      = _vorbis_block_alloc(vb,vi->channels*sizeof(*iwork));