SSIM360Context.ssim360_hist is an array of four pointers to double; so sizeof(*ssim360_hist[0]) (=sizeof(double)) is the correct size to use to calculate the amount of memory to allocate, not sizeof(*ssim360_hist) (which is sizeof(double*)). Use FF_ALLOCZ_TYPED_ARRAY to avoid this issue altogether. Fixes Coverity issue #1520671.
Showing the changes to libavfilter (1 of 1 file). Show all
Unified · Split
| @@ -1624,7 +1624,7 @@ static int config_output(AVFilterLink *outlink) · 1623 unmodified lines | ||
| 1624 | 1624 | memset(s->ssim360_percentile_sum, 0, sizeof(s->ssim360_percentile_sum)); |
| 1625 | 1625 | |
| 1626 | 1626 | for (int i = 0; i < s->nb_components; i++) { |
| 1627 | − s->ssim360_hist[i] = av_calloc(SSIM360_HIST_SIZE, sizeof(*s->ssim360_hist)); | |
| 1627 | + FF_ALLOCZ_TYPED_ARRAY(s->ssim360_hist[i], SSIM360_HIST_SIZE); | |
| 1628 | 1628 | if (!s->ssim360_hist[i]) |
| 1629 | 1629 | return AVERROR(ENOMEM); |
| 1630 | 1630 | } |