Skip to content

Commit c9a3152

Browse files
authored
prevent overflow in oapv_decode() (#53)
Signed-off-by: [email protected] <[email protected]>
1 parent f66bc3b commit c9a3152

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

src/oapv.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1959,10 +1959,10 @@ int oapvd_decode(oapvd_t did, oapv_bitb_t *bitb, oapv_frms_t *ofrms, oapvm_t mid
19591959
oapv_bsr_init(&ctx->bs, (u8 *)bitb->addr + cur_read_size, remain, NULL);
19601960
bs = &ctx->bs;
19611961

1962-
ret = oapvd_vlc_pbu_size(bs, &pbu_size); // 4byte
1962+
ret = oapvd_vlc_pbu_size(bs, &pbu_size); // read pbu_size (4 byte)
19631963
oapv_assert_g(OAPV_SUCCEEDED(ret), ERR);
1964-
oapv_assert_gv((pbu_size + 4) <= bs->size, ret, OAPV_ERR_MALFORMED_BITSTREAM, ERR);
1965-
1964+
remain -= 4; // size of pbu_size syntax
1965+
oapv_assert_gv(pbu_size <= remain, ret, OAPV_ERR_MALFORMED_BITSTREAM, ERR);
19661966

19671967
ret = oapvd_vlc_pbu_header(bs, &pbuh);
19681968
oapv_assert_g(OAPV_SUCCEEDED(ret), ERR);
@@ -2075,7 +2075,7 @@ int oapvd_info(void *au, int au_size, oapv_au_info_t *aui)
20752075

20762076
ret = oapvd_vlc_pbu_size(&bs, &pbu_size); // read pbu_size (4 byte)
20772077
oapv_assert_rv(OAPV_SUCCEEDED(ret), ret);
2078-
remain -= 4; // pbu_size syntax
2078+
remain -= 4; // size of pbu_size syntax
20792079
oapv_assert_rv(pbu_size <= remain, OAPV_ERR_MALFORMED_BITSTREAM);
20802080

20812081
/* pbu header */

0 commit comments

Comments
 (0)