aom_dsp: Asan fix in aom_film_grain_table_lookup Use the cached end_time of the entry to avoid heap-after-use error. BUG=aomedia:3000 Change-Id: Ic37c910ff08809cf75552d5b32c80e02137f7cce (cherry picked from commit d2a6356c57f0f680086f3dcc1961d233eddb3172)
diff --git a/aom_dsp/grain_table.c b/aom_dsp/grain_table.c index e03f04d..66c604e 100644 --- a/aom_dsp/grain_table.c +++ b/aom_dsp/grain_table.c
@@ -244,7 +244,7 @@ // If segments aren't aligned, delete from the beggining of subsequent // segments if (end_time > entry_end_time) { - aom_film_grain_table_lookup(t, entry->end_time, end_time, 1, 0); + aom_film_grain_table_lookup(t, entry_end_time, end_time, 1, 0); } return 1; }
diff --git a/test/film_grain_table_test.cc b/test/film_grain_table_test.cc index 524d67d..31fb908 100644 --- a/test/film_grain_table_test.cc +++ b/test/film_grain_table_test.cc
@@ -101,6 +101,20 @@ aom_film_grain_table_free(&table); } +TEST(FilmGrainTableTest, AddSingleSegmentRemoveBiggerSegment) { + aom_film_grain_table_t table; + aom_film_grain_t grain; + + memset(&table, 0, sizeof(table)); + + aom_film_grain_table_append(&table, 0, 1000, film_grain_test_vectors + 0); + EXPECT_TRUE(aom_film_grain_table_lookup(&table, 0, 1100, true, &grain)); + + EXPECT_EQ(0, table.head); + EXPECT_EQ(0, table.tail); + aom_film_grain_table_free(&table); +} + TEST(FilmGrainTableTest, SplitSingleSegment) { aom_film_grain_table_t table; aom_film_grain_t grain;