[XviD-devel] Fw: buffer overflow in userdata parser

suxen_drol suxen_drol at hotmail.com
Wed Jan 19 10:14:21 CET 2005


Forwarded by suxen_drol <suxen_drol at hotmail.com>
----------------------- Original Message -----------------------
 From:    pete <pross at xvid.org>
 To:      xvid-devel at xvid.org
 Date:    Tue, 18 Jan 2005 23:21:30 +1100
 Subject: buffer overflow in userdata parser
----

hi,

having just reviewed the userdata parsing code,
there appears to be a buffer overflow error when
the userdata is 256 bytes or more. patch below.

side note: isn't 256 bytes overkill. the largest
string we have to process is going to be
something like "DivX503Build99999p". even in we
extend the integers to 2^32, there still less
than 32 bytes to process..

diff -u -r1.48 bitstream.c
--- bitstream.c	5 Dec 2004 13:56:13 -0000	1.48
+++ bitstream.c	17 Jan 2005 06:50:08 -0000
@@ -981,16 +981,17 @@
 			return coding_type;
 
 		} else if (start_code == USERDATA_START_CODE) {
-			char tmp[256];
+#define USERDATA_LEN  256
+			char tmp[USERDATA_LEN];
 		    int i, version, build;
 			char packed;
 
 			BitstreamSkip(bs, 32);	/* user_data_start_code */
 
-			memset(tmp, 0, 256);
+			memset(tmp, 0, USERDATA_LEN);
 			tmp[0] = BitstreamShowBits(bs, 8);
 
-			for(i = 1; i < 256; i++){
+			for(i = 1; i < USERDATA_LEN - 1; i++){
 				tmp[i] = (BitstreamShowBits(bs, 16) & 0xFF);
 
 				if(tmp[i] == 0)


-- pete

--------------------- Original Message Ends --------------------

-- pete



More information about the XviD-devel mailing list