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
341341 len_counts[len]++;
342342 }
343343
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−
355344 if (get_bits1(&s->gb)) {
356345 int bits = 2 + 2 * get_bits(&s->gb, 3);
357346 max_symbol = 2 + get_bits(&s->gb, bits);
358347 if (max_symbol > alphabet_size) {
359348 av_log(s->avctx, AV_LOG_ERROR, "max symbol %d > alphabet size %d\n",
360349 max_symbol, alphabet_size);
361− ret = AVERROR_INVALIDDATA;
362− goto finish;
350+ return AVERROR_INVALIDDATA;
363351 }
364352 } else {
365353 max_symbol = alphabet_size;
366354 }
367355
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+
368367 prev_code_len = 8;
369368 symbol = 0;
370369 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