etc to rgba conversion - dont read stack garbage into the est imgs
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>
Fri, 28 Jul 2017 11:30:43 +0000 (20:30 +0900)
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>
Sat, 29 Jul 2017 00:08:40 +0000 (09:08 +0900)
surprising this wasn't caught when testing fallbacks. etc2 is used
hyper-rarely but still... basically it'd skip pixels and read stack
junk (which really would not crash but we'd have junk in image data).
or should.

found by PVS studio

@fix

src/static_libs/draw/draw_convert.c

index 1c65f4d..81c727f 100644 (file)
@@ -315,7 +315,7 @@ _convert_etc2_rgb8_to_argb8888(void *dst, const void *src, int w, int h,
           {
              rg_etc2_rgb8_decode_block(in, bgra);
              for (k = 0; k < 4; k++)
-               memcpy(out + x + k * out_step, bgra + k * 16, 16);
+               memcpy(out + x + k * out_step, bgra + (k * 4), 16);
           }
      }
 
@@ -347,7 +347,7 @@ _convert_etc2_rgba8_to_argb8888(void *dst, const void *src, int w, int h,
           {
              rg_etc2_rgba8_decode_block(in, bgra);
              for (k = 0; k < 4; k++)
-               memcpy(out + x + k * out_step, bgra + k * 16, 16);
+               memcpy(out + x + k * out_step, bgra + (k * 4), 16);
           }
         out += out_step * 4;
      }