Skip to content

[libopenapv] Fix signed overflow in VLC decoding#213

Open
fkyslov wants to merge 1 commit into
AcademySoftwareFoundation:mainfrom
fkyslov:fix-signed-overflow-40253925
Open

[libopenapv] Fix signed overflow in VLC decoding#213
fkyslov wants to merge 1 commit into
AcademySoftwareFoundation:mainfrom
fkyslov:fix-signed-overflow-40253925

Conversation

@fkyslov

@fkyslov fkyslov commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Add bounds checking to BSW_FLUSH_4BYTE and BSW_FLUSH_8BYTE macros in oapv_vlc.c to prevent writing past the end of the bitstream buffer during VLC encoding.

Add bounds checking in enc_frame in oapv.c to ensure the cumulative tile bitstream size does not exceed the target bitstream buffer end before copying tile bitstreams.

Change-Id: Ib40bc500096b6fda93e5802d97b306e4320ba6eb

Add bounds checks to prevent signed integer overflow during VLC decoding.

1. In dec_vlc_read_1bit_read, limit the number of leading zeros (k)
   to < 30 to prevent overflow when calculating symbol and suffix.
2. In dec_vlc_read, limit k to < 31 in the exp-golomb loop to prevent
   signed overflow in the shift operation (1 << k).
3. Update KPARAM_AC macro in oapv_vlc.h to use oapv_clip3 instead of
   oapv_min, ensuring the returned parameter is always >= 0.

This prevents a crash in media.swcodec when processing malformed
bitstreams with excessive zeros.

Bug: 495077878
Test: manual verification with stagefright and PoC
Flag: EXEMPT BUGFIX
Change-Id: Ia44c26d6a012681d94873bb1bcd372008c8b5bda
@fkyslov

fkyslov commented Jun 9, 2026

Copy link
Copy Markdown
Contributor Author

@kpchoi please review

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant