diff options
author | James Zern <jzern@google.com> | 2022-04-04 10:44:06 -0700 |
---|---|---|
committer | James Zern <jzern@google.com> | 2022-04-06 21:56:57 -0700 |
commit | b2c2d237a441318c426509828ebede89e899174d (patch) | |
tree | cf399f5899b0d524b85aabde97e868f3d14daa30 | |
parent | 384e0c32e76ad3f85aca1456e108eaef7eee061a (diff) | |
download | libwebp-b2c2d237a441318c426509828ebede89e899174d.tar.gz |
BackwardReferencesHashChainDistanceOnly: fix segfault on OOM
change CostManager to calloc to avoid frees on undefined pointer
values in CostManagerClear() should the cost_model allocation succeed,
but the cost_manager allocation fail
since:
v0.5.0-93-g3e023c17 Speed-up BackwardReferencesHashChainDistanceOnly.
Tested:
for i in `seq 1 639`; do
export MALLOC_FAIL_AT=$i
./examples/cwebp -m 6 -q 100 -lossless jpeg_file
done
Bug: webp:565
Change-Id: I376d81e6f41eb73529053e9e30c142b4b4f6b45b
(cherry picked from commit a828a59b49d2e3fbc40dc42a6ee6426cd0f2c9dc)
(cherry picked from commit dd80bb43431c222762be47fd92f8a37e032bc2c0)
(cherry picked from commit 4d0964cd0c2b20668d77f965a7e2fbe0b7dcaea4)
-rw-r--r-- | src/enc/backward_references_cost_enc.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/enc/backward_references_cost_enc.c b/src/enc/backward_references_cost_enc.c index 7175496c..ae8d5c4f 100644 --- a/src/enc/backward_references_cost_enc.c +++ b/src/enc/backward_references_cost_enc.c @@ -577,7 +577,7 @@ static int BackwardReferencesHashChainDistanceOnly( (CostModel*)WebPSafeCalloc(1ULL, cost_model_size); VP8LColorCache hashers; CostManager* cost_manager = - (CostManager*)WebPSafeMalloc(1ULL, sizeof(*cost_manager)); + (CostManager*)WebPSafeCalloc(1ULL, sizeof(*cost_manager)); int offset_prev = -1, len_prev = -1; double offset_cost = -1; int first_offset_is_constant = -1; // initialized with 'impossible' value |