diff mbox series

[FFmpeg-devel,v2] avcodec/cbs_vp8: Improve the bitstream position check

Message ID CH3PR11MB793745235FB62652B70A98DCB12C2@CH3PR11MB7937.namprd11.prod.outlook.com
State Accepted
Commit 61afe4d98ce62d9dfc6f0548e18730ba2f621cc2
Headers show
Series [FFmpeg-devel,v2] avcodec/cbs_vp8: Improve the bitstream position check | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Dai, Jianhui J March 19, 2024, 6:05 a.m. UTC
The VP8 compressed header may not be byte-aligned due to boolean
coding. Round up byte count for accurate data positioning.

Signed-off-by: Jianhui Dai <jianhui.j.dai@intel.com>
---
 libavcodec/cbs_vp8.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Ronald S. Bultje March 26, 2024, 1:13 p.m. UTC | #1
Hi,

On Tue, Mar 19, 2024 at 2:05 AM Dai, Jianhui J <
jianhui.j.dai-at-intel.com@ffmpeg.org> wrote:

> The VP8 compressed header may not be byte-aligned due to boolean
> coding. Round up byte count for accurate data positioning.
>
> Signed-off-by: Jianhui Dai <jianhui.j.dai@intel.com>
> ---
>  libavcodec/cbs_vp8.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/libavcodec/cbs_vp8.c b/libavcodec/cbs_vp8.c
> index 1f7e81cfe6..bb441b7187 100644
> --- a/libavcodec/cbs_vp8.c
> +++ b/libavcodec/cbs_vp8.c
> @@ -328,7 +328,9 @@ static int cbs_vp8_read_unit(CodedBitstreamContext
> *ctx,
>          return err;
>
>      pos = get_bits_count(&gbc);
> -    pos /= 8;
> +    // Position may not be byte-aligned after compressed header; Round up
> byte
> +    // count for accurate data positioning.
> +    pos = (pos + 7) / 8;
>      av_assert0(pos <= unit->data_size);
>
>      frame->data_ref = av_buffer_ref(unit->data_ref);
> --
> 2.34.1
>

Merged.

Ronald
diff mbox series

Patch

diff --git a/libavcodec/cbs_vp8.c b/libavcodec/cbs_vp8.c
index 1f7e81cfe6..bb441b7187 100644
--- a/libavcodec/cbs_vp8.c
+++ b/libavcodec/cbs_vp8.c
@@ -328,7 +328,9 @@  static int cbs_vp8_read_unit(CodedBitstreamContext *ctx,
         return err;
 
     pos = get_bits_count(&gbc);
-    pos /= 8;
+    // Position may not be byte-aligned after compressed header; Round up byte
+    // count for accurate data positioning.
+    pos = (pos + 7) / 8;
     av_assert0(pos <= unit->data_size);
 
     frame->data_ref = av_buffer_ref(unit->data_ref);