[FFmpeg-trac] #8483(avcodec:open): UBSan: outside the range of unsigned int

FFmpeg trac at avcodec.org
Sun Jan 19 14:55:52 EET 2020


#8483: UBSan: outside the range of unsigned int
-------------------------------------+-------------------------------------
             Reporter:               |                    Owner:
  andreafioraldi                     |
                 Type:  defect       |                   Status:  open
             Priority:  minor        |                Component:  avcodec
              Version:  git-master   |               Resolution:
             Keywords:  ircam ubsan  |               Blocked By:
             Blocking:               |  Reproduced by developer:  1
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
Changes (by cehoyos):

 * status:  new => open
 * priority:  normal => minor
 * version:  4.2 => git-master
 * keywords:  ubsan => ircam ubsan
 * reproduced:  0 => 1


Old description:

> Build ffmpeg 4.2.2 using clang and ubsan (-fsanitize=undefined).
> Command line: ./ffmpeg.ubsan -y -i ./input -c:v mpeg4 -c:a out.mp4
> Output:
> ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers
>   built with clang version 8.0.0-3~ubuntu18.04.2 (tags/RELEASE_800/final)
>   configuration: --cc=clang-8 --cxx=clang++-8 --ld=clang-8
>   libavutil      56. 31.100 / 56. 31.100
>   libavcodec     58. 54.100 / 58. 54.100
>   libavformat    58. 29.100 / 58. 29.100
>   libavdevice    58.  8.100 / 58.  8.100
>   libavfilter     7. 57.100 /  7. 57.100
>   libswscale      5.  5.100 /  5.  5.100
>   libswresample   3.  5.100 /  3.  5.100
> Trailing options were found on the commandline.
> libavformat/ircamdec.c:69:23: runtime error: -1.45475e+29 is outside the
> range of representable values of type 'unsigned int'
> input_invalid_uint: Invalid data found when processing input
>
> UBSan give the following error:
> libavformat/ircamdec.c:69:23: runtime error: -4.25353e+37 is outside the
> range of representable values of type 'unsigned int'
>
> Line 69 is (in case that the line number is misaligned in master):
> sample_rate = av_int2float(avio_rl32(s->pb));
>
> Not sure what is the bug here, I'm not enough confident with the
> codebase, but there is a bug cause UBSan has not false positive.
>
> I attach a minimal input that triggers the bug in base64:
> ZKMBAAAH6+8XDg4OIA==

New description:

 Build ffmpeg 4.2.2 using clang and ubsan (-fsanitize=undefined).
 Command line: ./ffmpeg.ubsan -y -i ./input -c:v mpeg4 -c:a out.mp4
 Output:
 {{{
 ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers
   built with clang version 8.0.0-3~ubuntu18.04.2 (tags/RELEASE_800/final)
   configuration: --cc=clang-8 --cxx=clang++-8 --ld=clang-8
   libavutil      56. 31.100 / 56. 31.100
   libavcodec     58. 54.100 / 58. 54.100
   libavformat    58. 29.100 / 58. 29.100
   libavdevice    58.  8.100 / 58.  8.100
   libavfilter     7. 57.100 /  7. 57.100
   libswscale      5.  5.100 /  5.  5.100
   libswresample   3.  5.100 /  3.  5.100
 Trailing options were found on the commandline.
 libavformat/ircamdec.c:69:23: runtime error: -1.45475e+29 is outside the
 range of representable values of type 'unsigned int'
 input_invalid_uint: Invalid data found when processing input

 UBSan give the following error:
 libavformat/ircamdec.c:69:23: runtime error: -4.25353e+37 is outside the
 range of representable values of type 'unsigned int'
 }}}
 Line 69 is (in case that the line number is misaligned in master):
 sample_rate = av_int2float(avio_rl32(s->pb));

 Not sure what is the bug here, I'm not enough confident with the codebase,
 but there is a bug cause UBSan has not false positive.

 I attach a minimal input that triggers the bug in base64:
 ZKMBAAAH6+8XDg4OIA==

--

--
Ticket URL: <https://trac.ffmpeg.org/ticket/8483#comment:1>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list