Results in over-read of the array. Fortunately, the excess element was never actually used, but it still triggers ASAN (and could in theory trigger a segfault).
Showing the changes to libavfilter (1 of 1 file). Show all
Unified · Split
| @@ -482,7 +482,7 @@ static int query_formats(const AVFilterContext *ctx, · 481 unmodified lines | ||
| 482 | 482 | formats = ff_all_color_spaces(); |
| 483 | 483 | for (int i = 0; i < formats->nb_formats; i++) { |
| 484 | 484 | if (!sws_test_colorspace(formats->formats[i], 0)) { |
| 485 | − for (int j = i--; j < formats->nb_formats; j++) | |
| 485 | + for (int j = i--; j + 1 < formats->nb_formats; j++) | |
| 486 | 486 | formats->formats[j] = formats->formats[j + 1]; |
| 487 | 487 | formats->nb_formats--; |
| 488 | 488 | } |
| @@ -501,7 +501,7 @@ static int query_formats(const AVFilterContext *ctx, · 12 unmodified lines | ||
| 501 | 501 | formats = ff_all_color_spaces(); |
| 502 | 502 | for (int i = 0; i < formats->nb_formats; i++) { |
| 503 | 503 | if (!sws_test_colorspace(formats->formats[i], 1)) { |
| 504 | − for (int j = i--; j < formats->nb_formats; j++) | |
| 504 | + for (int j = i--; j + 1 < formats->nb_formats; j++) | |
| 505 | 505 | formats->formats[j] = formats->formats[j + 1]; |
| 506 | 506 | formats->nb_formats--; |
| 507 | 507 | } |