Commit: 21e128226533c704c43c285bb5f78faf16a11b58
Author: Bastien Montagne
Date:   Fri Jan 20 18:41:56 2017 +0100
Branches: master
https://developer.blender.org/rB21e128226533c704c43c285bb5f78faf16a11b58

Fix float buffer of tracking image accessed outside of check that it has been 
correctly allocated.

Reported by coverity scan.

===================================================================

M       source/blender/blenkernel/intern/tracking_util.c

===================================================================

diff --git a/source/blender/blenkernel/intern/tracking_util.c 
b/source/blender/blenkernel/intern/tracking_util.c
index c34da4f681..1c056cda68 100644
--- a/source/blender/blenkernel/intern/tracking_util.c
+++ b/source/blender/blenkernel/intern/tracking_util.c
@@ -625,17 +625,17 @@ static ImBuf *make_grayscale_ibuf_copy(ImBuf *ibuf)
         */
        size = (size_t)grayscale->x * (size_t)grayscale->y * sizeof(float);
        grayscale->channels = 1;
-       if ((grayscale->rect_float = MEM_mapallocN(size, "tracking grayscale 
image"))) {
+       if ((grayscale->rect_float = MEM_mapallocN(size, "tracking grayscale 
image")) != NULL) {
                grayscale->mall |= IB_rectfloat;
                grayscale->flags |= IB_rectfloat;
-       }
 
-       for (i = 0; i < grayscale->x * grayscale->y; ++i) {
-               const float *pixel = ibuf->rect_float + ibuf->channels * i;
+               for (i = 0; i < grayscale->x * grayscale->y; ++i) {
+                       const float *pixel = ibuf->rect_float + ibuf->channels 
* i;
 
-               grayscale->rect_float[i] = 0.2126f * pixel[0] +
-                                          0.7152f * pixel[1] +
-                                          0.0722f * pixel[2];
+                       grayscale->rect_float[i] = 0.2126f * pixel[0] +
+                                                  0.7152f * pixel[1] +
+                                                  0.0722f * pixel[2];
+               }
        }
 
        return grayscale;
@@ -653,14 +653,14 @@ static void ibuf_to_float_image(const ImBuf *ibuf, 
libmv_FloatImage *float_image
 static ImBuf *float_image_to_ibuf(libmv_FloatImage *float_image)
 {
        ImBuf *ibuf = IMB_allocImBuf(float_image->width, float_image->height, 
32, 0);
-       size_t size = (size_t)ibuf->x * (size_t)ibuf->y *
-                     float_image->channels * sizeof(float);
+       size_t size = (size_t)ibuf->x * (size_t)ibuf->y * float_image->channels 
* sizeof(float);
        ibuf->channels = float_image->channels;
-       if ((ibuf->rect_float = MEM_mapallocN(size, "tracking grayscale 
image"))) {
+       if ((ibuf->rect_float = MEM_mapallocN(size, "tracking grayscale 
image")) != NULL) {
                ibuf->mall |= IB_rectfloat;
                ibuf->flags |= IB_rectfloat;
+
+               memcpy(ibuf->rect_float, float_image->buffer, size);
        }
-       memcpy(ibuf->rect_float, float_image->buffer, size);
        return ibuf;
 }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to