libavcodec/vp8.c:1113: error: Buffer Overrun L2
  Offset: [2, 4] (⇐ 2 + [0, 2]) Size: 3 by call to `vp8_mc`.

libavcodec/vp8.c:1094:1: Parameter `s->put_pixels_tab[*]`
1092.  * Apply motion vectors to prediction buffer, chapter 18.
1093.  */
1094. static void inter_predict(VP8Context *s, uint8_t *dst[3], VP8Macroblock *mb,
      ^
1095.                           int mb_x, int mb_y)
1096. {

libavcodec/vp8.c:1113:17: Call
1111.         for (y = 0; y < 4; y++) {
1112.             for (x = 0; x < 4; x++) {
1113.                 vp8_mc(s, 1, dst[0] + 4*y*s->linesize + x*4,
                      ^
1114.                        s->framep[mb->ref_frame]->data[0], &mb->bmv[4*y + x],
1115.                        4*x + x_off, 4*y + y_off, 4, 4,

libavcodec/vp8.c:1022:39: <Offset trace>
1020. {
1021.     if (AV_RN32A(mv)) {
1022.         static const uint8_t idx[8] = { 0, 1, 2, 1, 2, 1, 2, 1 };
                                            ^
1023.         int mx = (mv->x << luma)&7, mx_idx = idx[mx];
1024.         int my = (mv->y << luma)&7, my_idx = idx[my];

libavcodec/vp8.c:1022:39: Assignment
  1020. {
  1021.     if (AV_RN32A(mv)) {
  1022.         static const uint8_t idx[8] = { 0, 1, 2, 1, 2, 1, 2, 1 };
                                              ^
  1023.         int mx = (mv->x << luma)&7, mx_idx = idx[mx];
  1024.         int my = (mv->y << luma)&7, my_idx = idx[my];

libavcodec/vp8.c:1024:9: Assignment
  1022.         static const uint8_t idx[8] = { 0, 1, 2, 1, 2, 1, 2, 1 };
  1023.         int mx = (mv->x << luma)&7, mx_idx = idx[mx];
  1024.         int my = (mv->y << luma)&7, my_idx = idx[my];
                ^
  1025. 
  1026.         x_off += mv->x >> (3 - luma);

libavcodec/vp8.c:1015:1: <Length trace>
1013.  * @param mc_func motion compensation function pointers (bilinear or sixtap MC)
1014.  */
1015. static inline void vp8_mc(VP8Context *s, int luma,
      ^
1016.                           uint8_t *dst, uint8_t *src, const VP56mv *mv,
1017.                           int x_off, int y_off, int block_w, int block_h,

libavcodec/vp8.c:1015:1: Parameter `*mc_func`
  1013.  * @param mc_func motion compensation function pointers (bilinear or sixtap MC)
  1014.  */
  1015. static inline void vp8_mc(VP8Context *s, int luma,
        ^
  1016.                           uint8_t *dst, uint8_t *src, const VP56mv *mv,
  1017.                           int x_off, int y_off, int block_w, int block_h,

libavcodec/vp8.c:1038:9: Array access: Offset: [2, 4] (⇐ 2 + [0, 2]) Size: 3 by call to `vp8_mc` 
  1036.             src = s->edge_emu_buffer + 2 + linesize * 2;
  1037.         }
  1038.         mc_func[my_idx][mx_idx](dst, linesize, src, linesize, block_h, mx, my);
                ^
  1039.     } else
  1040.         mc_func[0][0](dst, linesize, src + y_off * linesize + x_off, linesize, block_h, 0, 0);

static inline void vp8_mc(VP8Context *s, int luma,
                          uint8_t *dst, uint8_t *src, const VP56mv *mv,
                          int x_off, int y_off, int block_w, int block_h,
                          int width, int height, int linesize,
                          vp8_mc_func mc_func[3][3])
{
    if (AV_RN32A(mv)) {
        static const uint8_t idx[8] = { 0, 1, 2, 1, 2, 1, 2, 1 };
        int mx = (mv->x << luma)&7, mx_idx = idx[mx];
        int my = (mv->y << luma)&7, my_idx = idx[my];
        x_off += mv->x >> (3 - luma);
        y_off += mv->y >> (3 - luma);
        src += y_off * linesize + x_off;
        if (x_off < 2 || x_off >= width  - block_w - 3 ||
            y_off < 2 || y_off >= height - block_h - 3) {
            ff_emulated_edge_mc(s->edge_emu_buffer, src - 2 * linesize - 2, linesize,
                                block_w + 5, block_h + 5,
                                x_off - 2, y_off - 2, width, height);
            src = s->edge_emu_buffer + 2 + linesize * 2;
        }
        mc_func[my_idx][mx_idx](dst, linesize, src, linesize, block_h, mx, my);
    } else
        mc_func[0][0](dst, linesize, src + y_off * linesize + x_off, linesize, block_h, 0, 0);
}
['static void inter_predict(VP8Context *s, uint8_t *dst[3], VP8Macroblock *mb,\n                          int mb_x, int mb_y)\n{\n    int x_off = mb_x << 4, y_off = mb_y << 4;\n    int width = 16*s->mb_width, height = 16*s->mb_height;\n    prefetch_motion(s, mb, mb_x, mb_y, x_off, y_off, VP56_FRAME_PREVIOUS);\n    if (mb->mode < VP8_MVMODE_SPLIT) {\n        vp8_mc_part(s, dst, s->framep[mb->ref_frame], x_off, y_off,\n                    0, 0, 16, 16, width, height, &mb->mv);\n    } else switch (mb->partitioning) {\n    case VP8_SPLITMVMODE_4x4: {\n        int x, y;\n        VP56mv uvmv;\n        for (y = 0; y < 4; y++) {\n            for (x = 0; x < 4; x++) {\n                vp8_mc(s, 1, dst[0] + 4*y*s->linesize + x*4,\n                       s->framep[mb->ref_frame]->data[0], &mb->bmv[4*y + x],\n                       4*x + x_off, 4*y + y_off, 4, 4,\n                       width, height, s->linesize,\n                       s->put_pixels_tab[2]);\n            }\n        }\n        x_off >>= 1; y_off >>= 1; width >>= 1; height >>= 1;\n        for (y = 0; y < 2; y++) {\n            for (x = 0; x < 2; x++) {\n                uvmv.x = mb->bmv[ 2*y    * 4 + 2*x  ].x +\n                         mb->bmv[ 2*y    * 4 + 2*x+1].x +\n                         mb->bmv[(2*y+1) * 4 + 2*x  ].x +\n                         mb->bmv[(2*y+1) * 4 + 2*x+1].x;\n                uvmv.y = mb->bmv[ 2*y    * 4 + 2*x  ].y +\n                         mb->bmv[ 2*y    * 4 + 2*x+1].y +\n                         mb->bmv[(2*y+1) * 4 + 2*x  ].y +\n                         mb->bmv[(2*y+1) * 4 + 2*x+1].y;\n                uvmv.x = (uvmv.x + 2 + (uvmv.x >> (INT_BIT-1))) >> 2;\n                uvmv.y = (uvmv.y + 2 + (uvmv.y >> (INT_BIT-1))) >> 2;\n                if (s->profile == 3) {\n                    uvmv.x &= ~7;\n                    uvmv.y &= ~7;\n                }\n                vp8_mc(s, 0, dst[1] + 4*y*s->uvlinesize + x*4,\n                       s->framep[mb->ref_frame]->data[1], &uvmv,\n                       4*x + x_off, 4*y + y_off, 4, 4,\n                       width, height, s->uvlinesize,\n                       s->put_pixels_tab[2]);\n                vp8_mc(s, 0, dst[2] + 4*y*s->uvlinesize + x*4,\n                       s->framep[mb->ref_frame]->data[2], &uvmv,\n                       4*x + x_off, 4*y + y_off, 4, 4,\n                       width, height, s->uvlinesize,\n                       s->put_pixels_tab[2]);\n            }\n        }\n        break;\n    }\n    case VP8_SPLITMVMODE_16x8:\n        vp8_mc_part(s, dst, s->framep[mb->ref_frame], x_off, y_off,\n                    0, 0, 16, 8, width, height, &mb->bmv[0]);\n        vp8_mc_part(s, dst, s->framep[mb->ref_frame], x_off, y_off,\n                    0, 8, 16, 8, width, height, &mb->bmv[1]);\n        break;\n    case VP8_SPLITMVMODE_8x16:\n        vp8_mc_part(s, dst, s->framep[mb->ref_frame], x_off, y_off,\n                    0, 0, 8, 16, width, height, &mb->bmv[0]);\n        vp8_mc_part(s, dst, s->framep[mb->ref_frame], x_off, y_off,\n                    8, 0, 8, 16, width, height, &mb->bmv[1]);\n        break;\n    case VP8_SPLITMVMODE_8x8:\n        vp8_mc_part(s, dst, s->framep[mb->ref_frame], x_off, y_off,\n                    0, 0, 8, 8, width, height, &mb->bmv[0]);\n        vp8_mc_part(s, dst, s->framep[mb->ref_frame], x_off, y_off,\n                    8, 0, 8, 8, width, height, &mb->bmv[1]);\n        vp8_mc_part(s, dst, s->framep[mb->ref_frame], x_off, y_off,\n                    0, 8, 8, 8, width, height, &mb->bmv[2]);\n        vp8_mc_part(s, dst, s->framep[mb->ref_frame], x_off, y_off,\n                    8, 8, 8, 8, width, height, &mb->bmv[3]);\n        break;\n    }\n    prefetch_motion(s, mb, mb_x, mb_y, x_off, y_off, VP56_FRAME_GOLDEN);\n}', 'static inline void vp8_mc(VP8Context *s, int luma,\n                          uint8_t *dst, uint8_t *src, const VP56mv *mv,\n                          int x_off, int y_off, int block_w, int block_h,\n                          int width, int height, int linesize,\n                          vp8_mc_func mc_func[3][3])\n{\n    if (AV_RN32A(mv)) {\n        static const uint8_t idx[8] = { 0, 1, 2, 1, 2, 1, 2, 1 };\n        int mx = (mv->x << luma)&7, mx_idx = idx[mx];\n        int my = (mv->y << luma)&7, my_idx = idx[my];\n        x_off += mv->x >> (3 - luma);\n        y_off += mv->y >> (3 - luma);\n        src += y_off * linesize + x_off;\n        if (x_off < 2 || x_off >= width  - block_w - 3 ||\n            y_off < 2 || y_off >= height - block_h - 3) {\n            ff_emulated_edge_mc(s->edge_emu_buffer, src - 2 * linesize - 2, linesize,\n                                block_w + 5, block_h + 5,\n                                x_off - 2, y_off - 2, width, height);\n            src = s->edge_emu_buffer + 2 + linesize * 2;\n        }\n        mc_func[my_idx][mx_idx](dst, linesize, src, linesize, block_h, mx, my);\n    } else\n        mc_func[0][0](dst, linesize, src + y_off * linesize + x_off, linesize, block_h, 0, 0);\n}']