History

avcodec/webp: Check before allocations

Avoids freeing lateron.

Andreas Rheinhardt committed 1 year ago

Commit 1fc0ee41 parent e0df21b1 file · +12 −13Browse files

Showing the changes to libavcodec (1 of 1 file). Show all

Unified · Split

libavcodec/webp.c+12−13
@@ -341,30 +341,29 @@ static int read_huffman_code_normal(WebPContext *s, HuffReader *hc, · 340 unmodified lines
341 len_counts[len]++;341 len_counts[len]++;
342 }342 }
343 343
344 ret = huff_reader_build_canonical(&code_len_hc, code_length_code_lengths, len_counts,
345 NUM_CODE_LENGTH_CODES, s->avctx);
346 if (ret < 0)
347 return ret;
348
349 code_lengths = av_malloc(alphabet_size);
350 if (!code_lengths) {
351 ret = AVERROR(ENOMEM);
352 goto finish;
353 }
354
355 if (get_bits1(&s->gb)) {344 if (get_bits1(&s->gb)) {
356 int bits = 2 + 2 * get_bits(&s->gb, 3);345 int bits = 2 + 2 * get_bits(&s->gb, 3);
357 max_symbol = 2 + get_bits(&s->gb, bits);346 max_symbol = 2 + get_bits(&s->gb, bits);
358 if (max_symbol > alphabet_size) {347 if (max_symbol > alphabet_size) {
359 av_log(s->avctx, AV_LOG_ERROR, "max symbol %d > alphabet size %d\n",348 av_log(s->avctx, AV_LOG_ERROR, "max symbol %d > alphabet size %d\n",
360 max_symbol, alphabet_size);349 max_symbol, alphabet_size);
361 ret = AVERROR_INVALIDDATA;350 return AVERROR_INVALIDDATA;
362 goto finish;
363 }351 }
364 } else {352 } else {
365 max_symbol = alphabet_size;353 max_symbol = alphabet_size;
366 }354 }
367 355
356 ret = huff_reader_build_canonical(&code_len_hc, code_length_code_lengths, len_counts,
357 NUM_CODE_LENGTH_CODES, s->avctx);
358 if (ret < 0)
359 return ret;
360
361 code_lengths = av_malloc(alphabet_size);
362 if (!code_lengths) {
363 ret = AVERROR(ENOMEM);
364 goto finish;
365 }
366
368 prev_code_len = 8;367 prev_code_len = 8;
369 symbol = 0;368 symbol = 0;
370 memset(len_counts, 0, sizeof(len_counts));369 memset(len_counts, 0, sizeof(len_counts));

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t