diff --git a/libavfilter/drawutils.c b/libavfilter/drawutils.c index ac30db21a6..0b2f17e52a 100644 --- a/libavfilter/drawutils.c +++ b/libavfilter/drawutils.c @@ -76,6 +76,8 @@ int ff_fill_line_with_color(uint8_t *line[4], int pixel_step[4], int w, uint8_t dst_color[rgba_map[i]] = rgba_color[i]; line[0] = av_malloc_array(w, pixel_step[0]); + if (!line[0]) + return AVERROR(ENOMEM); for (i = 0; i < w; i++) memcpy(line[0] + i * pixel_step[0], dst_color, pixel_step[0]); if (rgba_map_ptr) @@ -95,6 +97,11 @@ int ff_fill_line_with_color(uint8_t *line[4], int pixel_step[4], int w, uint8_t pixel_step[plane] = 1; line_size = FF_CEIL_RSHIFT(w, hsub1) * pixel_step[plane]; line[plane] = av_malloc(line_size); + if (!line[plane]) { + while(plane && line[plane-1]) + av_freep(&line[--plane]); + return AVERROR(ENOMEM); + } memset(line[plane], dst_color[plane], line_size); } }