Opened 7 years ago
Closed 5 years ago
#2357 closed defect (fixed)
An Integer overflow in Mplayer-1.4-8’s libmpcodecs/ad_hwmpa.c
| Reported by: | Taolaw | Owned by: | |
|---|---|---|---|
| Priority: | normal | Component: | ao |
| Version: | unspecified | Severity: | blocker |
| Keywords: | Integer-overflow; Vulnerability | Cc: | |
| Blocked By: | Blocking: | ||
| Reproduced by developer: | no | Analyzed by developer: | no |
Description
Summary of the bug:An Integer overflow in Mplayer-1.4-8’s libmpcodecs/ad_hwmpa.c
How to reproduce:
In line 136 of ad_hwmpa.c, When the memset function is called , since the third argument of this function is a unsigned int , the argument passed in is a signed int , which causes Integer overflow when tot2 < tot .
```
memset(&buf[tot], 0, tot2-tot);
return tot2;
```
gdb-peda$ r -vo null -ao null Integer-overflow
Starting program: /root/tmp/crash/picture/mplayer -vo null -ao null Integer-overflow
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
MPlayer 1.4-8 (C) 2000-2019 MPlayer Team
Playing Integer-overflow.
libavformat version 58.27.102 (internal)
libavformat file format detected.
[mp2 @ 0x555556465000]Header missing
[mp2 @ 0x555556465000]Header missing
[mp2 @ 0x555556465000]Header missing
[mp2 @ 0x555556465000]Header missing
[mp2 @ 0x555556465000]Header missing
[mp2 @ 0x555556465000]Header missing
[mp2 @ 0x555556465000]big_values too big
[mp2 @ 0x555556465000]Error while decoding MPEG audio frame.
[mp2 @ 0x555556465000]Header missing
[mp2 @ 0x555556465000]Header missing
[mp2 @ 0x555556465000]big_values too big
[mp2 @ 0x555556465000]Error while decoding MPEG audio frame.
[mp2 @ 0x555556465000]Header missing
[mp2 @ 0x555556465000]Header missing
[mp2 @ 0x555556465000]Header missing
[mp2 @ 0x555556465000]Header missing
[mp2 @ 0x555556465000]big_values too big
[mp2 @ 0x555556465000]Error while decoding MPEG audio frame.
[mp2 @ 0x555556465000]Header missing
[mp2 @ 0x555556465000]Header missing
[mp2 @ 0x555556465000]Header missing
[mp2 @ 0x555556465000]Header missing
[mpeg @ 0x555556449d60]decoding for stream 0 failed
[mpeg @ 0x555556449d60]start time for stream 0 is not set in estimate_timings_from_pts
[mpeg @ 0x555556449d60]Could not find codec parameters for stream 0 (Audio: mp2, stereo, s16p, 40 kb/s): unspecified sample rate
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[lavf] stream 0: audio (mp2), -aid 0
Load subtitles in ./
==========================================================================
Requested audio codec family [mpg123] (afm=mpg123) not available.
Enable it at compilation.
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
libavcodec version 58.51.100 (internal)
[mp2float @ 0x555556465000]Header missing
[mp2float @ 0x555556465000]Header missing
[mp2float @ 0x555556465000]Header missing
[mp2float @ 0x555556465000]Header missing
[mp2float @ 0x555556465000]Header missing
[mp2float @ 0x555556465000]Header missing
Unknown/missing audio format -> no sound
ADecoder init failed :(
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
[mp2 @ 0x555556465000]big_values too big
[mp2 @ 0x555556465000]Error while decoding MPEG audio frame.
[mp2 @ 0x555556465000]Header missing
[mp2 @ 0x555556465000]Header missing
[mp2 @ 0x555556465000]big_values too big
[mp2 @ 0x555556465000]Error while decoding MPEG audio frame.
[mp2 @ 0x555556465000]Header missing
[mp2 @ 0x555556465000]Header missing
Unknown/missing audio format -> no sound
ADecoder init failed :(
Requested audio codec family [mad] (afm=libmad) not available.
Enable it at compilation.
Opening audio decoder: [hwmpa] MPEG audio pass-through (fake decoder)
AUDIO: 32000 Hz, 2 ch, mpeg2, 40.0 kbit/3.91% (ratio: 5000->128000)
Selected audio codec: [hwmpa] afm: hwmpa (MPEG audio pass-through for hardware MPEG decoders)
==========================================================================
AO: [null] 32000Hz 2ch mpeg2 (1 bytes per sample)
Video: no video
Starting playback...
A: 0.8 (00.7) of 2.5 (02.5) ??,?%
Program received signal SIGSEGV, Segmentation fault.
[----------------------------------registers-----------------------------------]
RAX: 0x0
RBX: 0x420
RCX: 0xffffffffffdfe160
RDX: 0x555556eed280 --> 0x0
RSI: 0x0
RDI: 0x5555570ef000
RBP: 0x300
RSP: 0x7fffffffcdf8 --> 0x5555556f8066 (<decode_audio+198>: add rsp,0x48)
RIP: 0x7ffff78b5b0d (<__memset_avx2_erms+13>: rep stos BYTE PTR es:[rdi],al)
R8 : 0xffffffffffffffe0
R9 : 0x420
R10: 0x7fffffffce38 --> 0xb000000001
R11: 0x555556d43980 --> 0x15d0d0312fba2a70
R12: 0x7fffffffce3c --> 0xb0
R13: 0x555556d51a00 --> 0x555556d36cb0 --> 0x0
R14: 0x555556eed280 --> 0x0
R15: 0x7fffffffce34 --> 0x100000180
EFLAGS: 0x10282 (carry parity adjust zero SIGN trap INTERRUPT direction overflow)
[-------------------------------------code-------------------------------------]
0x7ffff78b5b03 <__memset_avx2_erms+3>: mov rcx,rdx
0x7ffff78b5b06 <__memset_avx2_erms+6>: movzx eax,sil
0x7ffff78b5b0a <__memset_avx2_erms+10>: mov rdx,rdi
=> 0x7ffff78b5b0d <__memset_avx2_erms+13>: rep stos BYTE PTR es:[rdi],al
0x7ffff78b5b0f <__memset_avx2_erms+15>: mov rax,rdx
0x7ffff78b5b12 <__memset_avx2_erms+18>: ret
0x7ffff78b5b13: data16 nop WORD PTR cs:[rax+rax*1+0x0]
0x7ffff78b5b1e: xchg ax,ax
[------------------------------------stack-------------------------------------]
0000| 0x7fffffffcdf8 --> 0x5555556f8066 (<decode_audio+198>: add rsp,0x48)
0008| 0x7fffffffce00 --> 0x0
0016| 0x7fffffffce08 --> 0x7fff00000420
0024| 0x7fffffffce10 --> 0x7fff00000531
0032| 0x7fffffffce18 --> 0x555556eed280 --> 0x0
0040| 0x7fffffffce20 --> 0xff000000000000ff
0048| 0x7fffffffce28 --> 0x100000420
0056| 0x7fffffffce30 --> 0x18000001f40
[------------------------------------------------------------------------------]
Legend: code, data, rodata, value
Stopped reason: SIGSEGV
__memset_avx2_erms () at ../sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S:151
151 ../sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S:
gdb-peda$ bt
#0 __memset_avx2_erms () at ../sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S:151
#1 0x00005555556f8066 in decode_audio (sh=<optimized out>, buf=<optimized out>,
minlen=<optimized out>, maxlen=<optimized out>) at libmpcodecs/ad_hwmpa.c:136
#2 0x00005555556f9229 in filter_n_bytes (len=0xa00, sh=0x555556d51a00)
at libmpcodecs/dec_audio.c:409
#3 mp_decode_audio (sh_audio=0x555556d51a00, minlen=0x400) at libmpcodecs/dec_audio.c:493
#4 0x000055555569e843 in fill_audio_out_buffers () at mplayer.c:2168
#5 main (argc=<optimized out>, argc@entry=0x6, argv=<optimized out>, argv@entry=0x7fffffffe088)
at mplayer.c:3781
#6 0x00007ffff777d09b in __libc_start_main (main=0x55555569c580 <main>, argc=0x6,
argv=0x7fffffffe088, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>,
stack_end=0x7fffffffe078) at ../csu/libc-start.c:308
#7 0x00005555556a0c3a in _start () at mplayer.c:2242
Patches should be submitted to the mplayer-dev-eng mailing list and not this bug tracker.
Attachments (1)
Note:
See TracTickets
for help on using tickets.

crash test case