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

Reported by coverity scan.
This commit is contained in:
Bastien Montagne 2017-01-20 18:41:56 +01:00
parent 43268c1997
commit 21e1282265
1 changed files with 11 additions and 11 deletions

View File

@ -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;
}