[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