• Frank Barchard's avatar
    ubsan overflow fix for multiply by 0x01010101 · 9e39c1f2
    Frank Barchard authored
    This is an UBSan error reported by libjingle
    
    [ RUN      ] WebRtcVideoFrameTest.ConvertToYUY2BufferStride
    [000:000] (videoframe.cc:375): Validate frame passed. format: I420 bpp: 12 size: 1280x720 bytes: 1382400 expected: 1382400 sample[0..3]: 73, 73, 73, 73
    ../../chromium/src/third_party/libyuv/source/row_gcc.cc:2903:25: runtime error: signed integer overflow: 128 * 16843009 cannot be represented in type 'int'
    [8/614] WebRtcVideoFrameTest.ConvertToYUY2BufferStride returned/aborted with exit code 1 (32 ms)
    [9/614] WebRtcVideoFrameTest.ConvertToYUY2BufferInverted (29 ms)
    Note: Google Test filter = WebRtcVideoFrameTest.ConvertToYUY2BufferInverted
    
    The source is uint8 and the multiply is by 0x01010101 to replicate the byte to 4 bytes.
    Changing the constant to 0x01010101u should avoid overflow.
    
    R=harryjin@google.com
    TBR=harryjin@google.com
    BUG=libyuv:563
    
    Review URL: https://codereview.chromium.org/1657533005 .
    9e39c1f2
Name
Last commit
Last update
..
libyuv Loading commit data...
libyuv.h Loading commit data...