[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28318] trunk/blender/source/blender/imbuf /intern/jp2.c: [#22100] Jpeg2000 null pointer dereference

Campbell Barton ideasman42 at gmail.com
Wed Apr 21 09:49:07 CEST 2010


Revision: 28318
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28318
Author:   campbellbarton
Date:     2010-04-21 09:49:06 +0200 (Wed, 21 Apr 2010)

Log Message:
-----------
[#22100] Jpeg2000 null pointer dereference
found by Dan Eicher (dna)

Modified Paths:
--------------
    trunk/blender/source/blender/imbuf/intern/jp2.c

Modified: trunk/blender/source/blender/imbuf/intern/jp2.c
===================================================================
--- trunk/blender/source/blender/imbuf/intern/jp2.c	2010-04-21 04:21:27 UTC (rev 28317)
+++ trunk/blender/source/blender/imbuf/intern/jp2.c	2010-04-21 07:49:06 UTC (rev 28318)
@@ -92,8 +92,6 @@
 {
 	struct ImBuf *ibuf = 0;
 	int use_float = 0; /* for precision higher then 8 use float */
-	unsigned char *rect= NULL;
-	float *rect_float= NULL;
 	
 	long signed_offsets[4] = {0,0,0,0};
 	int float_divs[4];
@@ -159,7 +157,7 @@
 		return NULL;
 	}
 	
-	w = image->comps[0].w;	    
+	w = image->comps[0].w;
 	h = image->comps[0].h;
 	
 	switch (image->numcomps) {
@@ -189,13 +187,7 @@
 		float_divs[i]= (1<<image->comps[i].prec)-1;
 	}
 	
-	if (use_float) {
-		ibuf= IMB_allocImBuf(w, h, depth, IB_rectfloat, 0);
-		rect_float = ibuf->rect_float;
-	} else {
-		ibuf= IMB_allocImBuf(w, h, depth, IB_rect, 0);
-		rect = (unsigned char *) ibuf->rect;
-	}
+	ibuf= IMB_allocImBuf(w, h, depth, use_float ? IB_rectfloat : IB_rect, 0);
 	
 	if (ibuf==NULL) {
 		if(dinfo)
@@ -206,8 +198,8 @@
 	ibuf->ftype = JP2;
 	
 	if (use_float) {
-		rect_float = ibuf->rect_float;
-		
+		float *rect_float= ibuf->rect_float;
+
 		if (image->numcomps < 3) {
 			/* greyscale 12bits+ */
 			for (i = 0; i < w * h; i++, rect_float+=4) {
@@ -237,13 +229,14 @@
 		}
 		
 	} else {
-		
+		unsigned char *rect= (unsigned char *)ibuf->rect;
+
 		if (image->numcomps < 3) {
 			/* greyscale */
 			for (i = 0; i < w * h; i++, rect+=4) {
 				index = w * h - ((i) / (w) + 1) * w + (i) % (w);
 				
-				rect_float[0]= rect_float[1]= rect_float[2]= (image->comps[0].data[index] + signed_offsets[0]);
+				rect[0]= rect[1]= rect[2]= (image->comps[0].data[index] + signed_offsets[0]);
 				
 				if (image->numcomps == 2)
 					rect[3]= image->comps[1].data[index] + signed_offsets[1];





More information about the Bf-blender-cvs mailing list