#8747: libswscale 4.3 crash if output buffer is not 16 bytes aligned for yuv2rgb
conversion
-------------------------------------+-------------------------------------
Reporter: melanconj | Type: defect
Status: new | Priority: normal
Component: | Version:
undetermined | unspecified
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Summary of the bug:
With the 4.3 release, swscale now crashes if provided with an output
buffer that is not 16 bytes aligned for yuv2rgb conversions. It used to
work in previous releases.
How to reproduce:
{{{
#include <stdint.h>
#include "libswscale\swscale.h"
void main()
{
uint8_t* src = malloc(640*480);
uint8_t* dst = malloc(640*480*4);
if (((int64_t)dst & ~0xF) == (int64_t)dst) {
dst += 8; // Ensure we are unaligned. Comment out to see
it work
}
const uint8_t* srcSlice [3] = { src, src, src };
int srcStride[3] = {640, 320, 320};
int dstStride = 640 * 3;
void *context = sws_getCachedContext(NULL, 640, 480,
AV_PIX_FMT_YUV420P, 640, 480, AV_PIX_FMT_RGB24, SWS_POINT, NULL, NULL,
NULL);
sws_scale(context, srcSlice, srcStride, 0, 480, &dst, &dstStride);
}
}}}
It seems to have been introduced by the SSSE3 codepath that was added in
commit fc6a5883d6af8cae0e96af84dda0ad74b360a084.
I also found ticket https://trac.ffmpeg.org/ticket/8532 that found the
same issue as mine but with the input buffer, which was fixed.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/8747>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
_______________________________________________
FFmpeg-trac mailing list
[email protected]
https://ffmpeg.org/mailman/listinfo/ffmpeg-trac
To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".