summaryrefslogtreecommitdiff
path: root/libswscale
diff options
context:
space:
mode:
authorVittorio Giovara <vittorio.giovara@gmail.com>2014-12-17 16:02:07 +0100
committerLuca Barbato <lu_zero@gentoo.org>2015-01-12 22:19:55 +0100
commit3280b86c85f5a88397fce0230d1878fee79fbb93 (patch)
tree2b39fd85e2480015f1dac4019d30846111b880ab /libswscale
parent61335ab33e594d47b84fde7367ee10dc66fc3465 (diff)
downloadffmpeg-3280b86c85f5a88397fce0230d1878fee79fbb93.tar.gz
swscale: check memory allocations
CC: libav-stable@libav.org Bug-Id: CID 1257779 (cherry picked from commit 1dd797e3c9f179f957316a0becbec048b42df8aa) Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
Diffstat (limited to 'libswscale')
-rw-r--r--libswscale/yuv2rgb.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/libswscale/yuv2rgb.c b/libswscale/yuv2rgb.c
index 480fbe3999..a4f7a1178e 100644
--- a/libswscale/yuv2rgb.c
+++ b/libswscale/yuv2rgb.c
@@ -736,9 +736,13 @@ av_cold int ff_yuv2rgb_c_init_tables(SwsContext *c, const int inv_table[4],
av_free(c->yuvTable);
+#define ALLOC_YUV_TABLE(x) \
+ c->yuvTable = av_malloc(x); \
+ if (!c->yuvTable) \
+ return AVERROR(ENOMEM);
switch (bpp) {
case 1:
- c->yuvTable = av_malloc(1024);
+ ALLOC_YUV_TABLE(1024);
y_table = c->yuvTable;
yb = -(384 << 16) - oy;
for (i = 0; i < 1024 - 110; i++) {
@@ -753,7 +757,7 @@ av_cold int ff_yuv2rgb_c_init_tables(SwsContext *c, const int inv_table[4],
rbase = isRgb ? 3 : 0;
gbase = 1;
bbase = isRgb ? 0 : 3;
- c->yuvTable = av_malloc(1024 * 3);
+ ALLOC_YUV_TABLE(1024 * 3);
y_table = c->yuvTable;
yb = -(384 << 16) - oy;
for (i = 0; i < 1024 - 110; i++) {
@@ -772,7 +776,7 @@ av_cold int ff_yuv2rgb_c_init_tables(SwsContext *c, const int inv_table[4],
rbase = isRgb ? 5 : 0;
gbase = isRgb ? 2 : 3;
bbase = isRgb ? 0 : 6;
- c->yuvTable = av_malloc(1024 * 3);
+ ALLOC_YUV_TABLE(1024 * 3);
y_table = c->yuvTable;
yb = -(384 << 16) - oy;
for (i = 0; i < 1024 - 38; i++) {
@@ -791,7 +795,7 @@ av_cold int ff_yuv2rgb_c_init_tables(SwsContext *c, const int inv_table[4],
rbase = isRgb ? 8 : 0;
gbase = 4;
bbase = isRgb ? 0 : 8;
- c->yuvTable = av_malloc(1024 * 3 * 2);
+ ALLOC_YUV_TABLE(1024 * 3 * 2);
y_table16 = c->yuvTable;
yb = -(384 << 16) - oy;
for (i = 0; i < 1024; i++) {
@@ -814,7 +818,7 @@ av_cold int ff_yuv2rgb_c_init_tables(SwsContext *c, const int inv_table[4],
rbase = isRgb ? bpp - 5 : 0;
gbase = 5;
bbase = isRgb ? 0 : (bpp - 5);
- c->yuvTable = av_malloc(1024 * 3 * 2);
+ ALLOC_YUV_TABLE(1024 * 3 * 2);
y_table16 = c->yuvTable;
yb = -(384 << 16) - oy;
for (i = 0; i < 1024; i++) {
@@ -834,7 +838,7 @@ av_cold int ff_yuv2rgb_c_init_tables(SwsContext *c, const int inv_table[4],
break;
case 24:
case 48:
- c->yuvTable = av_malloc(1024);
+ ALLOC_YUV_TABLE(1024);
y_table = c->yuvTable;
yb = -(384 << 16) - oy;
for (i = 0; i < 1024; i++) {
@@ -855,7 +859,7 @@ av_cold int ff_yuv2rgb_c_init_tables(SwsContext *c, const int inv_table[4],
needAlpha = CONFIG_SWSCALE_ALPHA && isALPHA(c->srcFormat);
if (!needAlpha)
abase = (base + 24) & 31;
- c->yuvTable = av_malloc(1024 * 3 * 4);
+ ALLOC_YUV_TABLE(1024 * 3 * 4);
y_table32 = c->yuvTable;
yb = -(384 << 16) - oy;
for (i = 0; i < 1024; i++) {