diff options
author | James Zern <jzern@google.com> | 2022-04-04 10:47:40 -0700 |
---|---|---|
committer | James Zern <jzern@google.com> | 2022-04-06 21:55:27 -0700 |
commit | 89e226a3c70ae04fe8e1884aa0b291f39adb2fdf (patch) | |
tree | f450844b5d552534b72f18def832d70e7ac86a3e | |
parent | 4d0964cd0c2b20668d77f965a7e2fbe0b7dcaea4 (diff) | |
download | libwebp-89e226a3c70ae04fe8e1884aa0b291f39adb2fdf.tar.gz |
GetBackwardReferences: fail on alloc error
previously failures in the call to
VP8LBackwardReferencesTraceBackwards() would be ignored which, though it
wouldn't result in a crash, would produce non-deterministic output
Change-Id: Id9890a60883c3270ec75e968506d46eea32b76d4
(cherry picked from commit e3cfafaf719c2e163d3548d7a415da96fdff714f)
(cherry picked from commit 20ef03ee351d4ff03fc5ff3ec4804a879d1b9d5c)
-rw-r--r-- | src/enc/backward_references_enc.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/enc/backward_references_enc.c b/src/enc/backward_references_enc.c index d445b40f..59809b16 100644 --- a/src/enc/backward_references_enc.c +++ b/src/enc/backward_references_enc.c @@ -912,13 +912,14 @@ static VP8LBackwardRefs* GetBackwardReferences( quality >= 25) { const VP8LHashChain* const hash_chain_tmp = (lz77_type_best == kLZ77Standard) ? hash_chain : &hash_chain_box; - if (VP8LBackwardReferencesTraceBackwards(width, height, argb, *cache_bits, - hash_chain_tmp, best, worst)) { - double bit_cost_trace; - VP8LHistogramCreate(histo, worst, *cache_bits); - bit_cost_trace = VP8LHistogramEstimateBits(histo); - if (bit_cost_trace < bit_cost_best) best = worst; + double bit_cost_trace; + if (!VP8LBackwardReferencesTraceBackwards(width, height, argb, *cache_bits, + hash_chain_tmp, best, worst)) { + goto Error; } + VP8LHistogramCreate(histo, worst, *cache_bits); + bit_cost_trace = VP8LHistogramEstimateBits(histo); + if (bit_cost_trace < bit_cost_best) best = worst; } BackwardReferences2DLocality(width, best); |