<div dir="ltr"><div>Package: x264</div><div>Version: 2:0.148.2748+git97eaef2-1</div><div>Severity: normal</div><div><br></div><div>Dear Maintainer,</div><div><br></div><div><div>Running x264 with the attached poc file raises a heap buffer overflow<span style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">.</span></div><div><br></div><div>Following gdb log shows the program resulting in segfault.</div></div><div><br></div><div><div>jason@debian-amd64-stretch:~/report/debian-latest/x264$ gdb x264 -q</div><div>Reading symbols from x264...(no debugging symbols found)...done.</div><div>(gdb) run --crf 24 -o output.264 ./poc_ovf</div><div>Starting program: /usr/bin/x264 --crf 24 -o output.264 ./poc_ovf</div><div>[Thread debugging using libthread_db enabled]</div><div>Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".</div><div>ffms [info]: 352x288p 12:11 @ 250000/8839 fps (vfr)</div><div>x264 [info]: using SAR=12/11</div><div>x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2</div><div>x264 [info]: profile High, level 1.3</div><div><br></div><div>Program received signal SIGSEGV, Segmentation fault.</div><div>__memmove_avx_unaligned_erms () at ../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:364</div><div>364     ../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S: No such file or directory.</div><div>(gdb) x/i $rip</div><div>=> 0x7ffff4735f50 <__memmove_avx_unaligned_erms+368>:   vmovdqu -0x20(%rsi,%rdx,1),%ymm5</div><div>(gdb) info reg rsi rdx</div><div>rsi            0x555555d21ee0   93825000414944</div><div>rdx            0x160    352</div><div>(gdb) bt 10</div><div>#0  __memmove_avx_unaligned_erms () at ../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:364</div><div>#1  0x00005555555665b6 in ?? ()</div><div>#2  0x00005555555666df in ?? ()</div><div>#3  0x000055555556840b in ?? ()</div><div>#4  0x000055555555b5b9 in ?? ()</div><div>#5  0x00007ffff462d2e1 in __libc_start_main (main=0x55555555a030, argc=6, argv=0x7fffffffe5f8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>,</div><div>    stack_end=0x7fffffffe5e8) at ../csu/libc-start.c:291</div><div>#6  0x000055555555cb3a in ?? ()</div></div><div><br></div><div><div>When we compiled the source with AddressSanitizer, the program reports a heap-buffer-overflow error in 

<span style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">x264_cli_plane_copy() function as follow.</span></div></div><div><br></div><div><div>jason@debian-amd64-stretch:~/report/source-latest/x264$ ./x264-0.148/x264 --crf 24 -o output.264 poc_ovf</div><div>ffms [info]: 352x288p 12:11 @ 250000/8839 fps (vfr)</div><div>x264 [info]: using SAR=12/11</div><div>x264 [info]: using cpu capabilities: none!</div><div>x264 [info]: profile High, level 1.3</div><div>=================================================================</div><div>==6186==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x62c000007a2f at pc 0x0000004aac55 bp 0x7fffffffcf90 sp 0x7fffffffc740</div><div>READ of size 352 at 0x62c000007a2f thread T0</div><div>    #0 0x4aac54 in __asan_memcpy (/home/jason/report/source-latest/x264/x264-0.148/x264+0x4aac54)</div><div>    #1 0x5174f9 in x264_cli_plane_copy /home/jason/report/source-latest/x264/x264-0.148/filters/video/internal.c:33:9</div><div>    #2 0x5174f9 in x264_cli_pic_copy /home/jason/report/source-latest/x264/x264-0.148/filters/video/internal.c:55</div><div>    #3 0x51cc46 in get_frame /home/jason/report/source-latest/x264/x264-0.148/filters/video/fix_vfr_pts.c:100:13</div><div>    #4 0x4f667d in encode /home/jason/report/source-latest/x264/x264-0.148/x264.c:1921:13</div><div>    #5 0x4f667d in main /home/jason/report/source-latest/x264/x264-0.148/x264.c:382</div><div>    #6 0x7ffff45b02e0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202e0)</div><div>    #7 0x422969 in _start (/home/jason/report/source-latest/x264/x264-0.148/x264+0x422969)</div><div><br></div><div>0x62c000007a2f is located 0 bytes to the right of 30767-byte region [0x62c000000200,0x62c000007a2f)</div><div>allocated by thread T0 here:</div><div>    #0 0x4c18d0 in __interceptor_posix_memalign (/home/jason/report/source-latest/x264/x264-0.148/x264+0x4c18d0)</div><div>    #1 0x7ffff552b93f in av_malloc (/usr/lib/x86_64-linux-gnu/libavutil.so.55+0x2b93f)</div><div><br></div><div>SUMMARY: AddressSanitizer: heap-buffer-overflow (/home/jason/report/source-latest/x264/x264-0.148/x264+0x4aac54) in __asan_memcpy</div><div>Shadow bytes around the buggy address:</div><div>  0x0c587fff8ef0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</div><div>  0x0c587fff8f00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</div><div>  0x0c587fff8f10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</div><div>  0x0c587fff8f20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</div><div>  0x0c587fff8f30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</div><div>=>0x0c587fff8f40: 00 00 00 00 00[07]fa fa fa fa fa fa fa fa fa fa</div><div>  0x0c587fff8f50: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa</div><div>  0x0c587fff8f60: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa</div><div>  0x0c587fff8f70: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa</div><div>  0x0c587fff8f80: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa</div><div>  0x0c587fff8f90: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa</div></div><div><br></div><div><br></div><div><br></div><div>-- System Information:</div><div>Debian Release: 9.1</div><div>  APT prefers stable-updates</div><div>  APT policy: (500, 'stable-updates'), (500, 'stable')</div><div>Architecture: amd64 (x86_64)</div><div><br></div><div>Kernel: Linux 4.9.0-3-amd64 (SMP w/1 CPU core)</div><div>Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US:en (charmap=UTF-8)</div><div>Shell: /bin/sh linked to /bin/dash</div><div>Init: systemd (via /run/systemd/system)</div><div><br></div><div>Versions of packages x264 depends on:</div><div>ii  libavcodec57   7:3.2.10-1~deb9u1</div><div>ii  libavformat57  7:3.2.10-1~deb9u1</div><div>ii  libavutil55    7:3.2.10-1~deb9u1</div><div>ii  libc6          2.24-11+deb9u3</div><div>ii  libffms2-4     2.23-1</div><div>ii  libgpac4       0.5.2-426-gc5ad4e4+dfsg5-3+b1</div><div>ii  libswscale4    7:3.2.10-1~deb9u1</div><div>ii  libx264-148    2:0.148.2748+git97eaef2-1</div><div>ii  zlib1g         1:1.2.8.dfsg-5</div><div><br></div><div>x264 recommends no packages.</div><div><br></div><div>x264 suggests no packages.</div><div><br></div><div>-- no debconf information</div><div><br></div></div>