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

libavcodec/vp8.c:940:1: Parameter `s->vp8dsp.put_vp8_epel_pixels_tab[*]`
938.  * Apply motion vectors to prediction buffer, chapter 18.
939.  */
940. static void inter_predict(VP8Context *s, uint8_t *dst[3], VP8Macroblock *mb,
     ^
941.                           int mb_x, int mb_y)
942. {

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

libavcodec/vp8.c:917:35: <Offset trace>
915.                           vp8_mc_func mc_func[3][3])
916. {
917.     static const uint8_t idx[8] = { 0, 1, 2, 1, 2, 1, 2, 1 };
                                       ^
918.     int mx = (mv->x << luma)&7, mx_idx = idx[mx];
919.     int my = (mv->y << luma)&7, my_idx = idx[my];

libavcodec/vp8.c:917:35: Assignment
  915.                           vp8_mc_func mc_func[3][3])
  916. {
  917.     static const uint8_t idx[8] = { 0, 1, 2, 1, 2, 1, 2, 1 };
                                         ^
  918.     int mx = (mv->x << luma)&7, mx_idx = idx[mx];
  919.     int my = (mv->y << luma)&7, my_idx = idx[my];

libavcodec/vp8.c:919:5: Assignment
  917.     static const uint8_t idx[8] = { 0, 1, 2, 1, 2, 1, 2, 1 };
  918.     int mx = (mv->x << luma)&7, mx_idx = idx[mx];
  919.     int my = (mv->y << luma)&7, my_idx = idx[my];
           ^
  920. 
  921.     x_off += mv->x >> (3 - luma);

libavcodec/vp8.c:911:1: <Length trace>
909.  * @param linesize size of a single line of plane data, including padding
910.  */
911. static inline void vp8_mc(VP8Context *s, int luma,
     ^
912.                           uint8_t *dst, uint8_t *src, const VP56mv *mv,
913.                           int x_off, int y_off, int block_w, int block_h,

libavcodec/vp8.c:911:1: Parameter `*mc_func`
  909.  * @param linesize size of a single line of plane data, including padding
  910.  */
  911. static inline void vp8_mc(VP8Context *s, int luma,
       ^
  912.                           uint8_t *dst, uint8_t *src, const VP56mv *mv,
  913.                           int x_off, int y_off, int block_w, int block_h,

libavcodec/vp8.c:934:5: Array access: Offset: [2, 4] (⇐ 2 + [0, 2]) Size: 3 by call to `vp8_mc` 
  932.     }
  933. 
  934.     mc_func[my_idx][mx_idx](dst, linesize, src, linesize, block_h, mx, my);
           ^
  935. }
  936. 

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])
{
    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);
}
['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    VP56mv uvmv;\n    if (mb->mode < VP8_MVMODE_SPLIT) {\n        vp8_mc(s, 1, dst[0], s->framep[mb->ref_frame]->data[0], &mb->mv,\n               x_off, y_off, 16, 16, width, height, s->linesize,\n               s->vp8dsp.put_vp8_epel_pixels_tab[0]);\n        uvmv = mb->mv;\n        if (s->profile == 3) {\n            uvmv.x &= ~7;\n            uvmv.y &= ~7;\n        }\n        x_off >>= 1; y_off >>= 1; width >>= 1; height >>= 1;\n        vp8_mc(s, 0, dst[1], s->framep[mb->ref_frame]->data[1], &uvmv,\n               x_off, y_off, 8, 8, width, height, s->uvlinesize,\n               s->vp8dsp.put_vp8_epel_pixels_tab[1]);\n        vp8_mc(s, 0, dst[2], s->framep[mb->ref_frame]->data[2], &uvmv,\n               x_off, y_off, 8, 8, width, height, s->uvlinesize,\n               s->vp8dsp.put_vp8_epel_pixels_tab[1]);\n    } else {\n        int x, y;\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->vp8dsp.put_vp8_epel_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->vp8dsp.put_vp8_epel_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->vp8dsp.put_vp8_epel_pixels_tab[2]);\n            }\n        }\n    }\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    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}']