libavformat/mpegtsenc.c:187: error: Buffer Overrun L2
  Offset added: [5, 189] (⇐ [4, 5] + [1, 184]) Size: 188 by call to `mpegts_write_section1`.

libavformat/mpegtsenc.c:174:1: Array declaration
172. } MpegTSWrite;
173. 
174. static void mpegts_write_pat(AVFormatContext *s)
     ^
175. {
176.     MpegTSWrite *ts = s->priv_data;

libavformat/mpegtsenc.c:187:5: Call
185.         put16(&q, 0xe000 | service->pmt.pid);
186.     }
187.     mpegts_write_section1(&ts->pat, PAT_TID, ts->tsid, 0, 0, 0,
         ^
188.                           data, q - data);
189. }

libavformat/mpegtsenc.c:94:1: Parameter `len`
  92. }
  93. 
  94. static int mpegts_write_section1(MpegTSSection *s, int tid, int id,
      ^
  95.                           int version, int sec_num, int last_sec_num,
  96.                           uint8_t *buf, int len)

libavformat/mpegtsenc.c:101:5: Assignment
   99.     unsigned int tot_len;
  100. 
  101.     tot_len = 3 + 5 + len + 4;
           ^
  102.     /* check if not too big */
  103.     if (tot_len > 1024)

libavformat/mpegtsenc.c:115:5: Call
  113.     memcpy(q, buf, len);
  114. 
  115.     mpegts_write_section(s, section, tot_len);
           ^
  116.     return 0;
  117. }

libavformat/mpegtsenc.c:39:1: <Offset trace>
37. 
38. /* NOTE: 4 bytes must be left at the end for the crc32 */
39. static void mpegts_write_section(MpegTSSection *s, uint8_t *buf, int len)
    ^
40. {
41.     unsigned int crc;

libavformat/mpegtsenc.c:39:1: Parameter `len`
    37. 
    38. /* NOTE: 4 bytes must be left at the end for the crc32 */
    39. static void mpegts_write_section(MpegTSSection *s, uint8_t *buf, int len)
        ^
    40. {
    41.     unsigned int crc;

libavformat/mpegtsenc.c:39:1: <Length trace>
37. 
38. /* NOTE: 4 bytes must be left at the end for the crc32 */
39. static void mpegts_write_section(MpegTSSection *s, uint8_t *buf, int len)
    ^
40. {
41.     unsigned int crc;

libavformat/mpegtsenc.c:39:1: Array declaration
    37. 
    38. /* NOTE: 4 bytes must be left at the end for the crc32 */
    39. static void mpegts_write_section(MpegTSSection *s, uint8_t *buf, int len)
        ^
    40. {
    41.     unsigned int crc;

libavformat/mpegtsenc.c:57:9: Assignment
    55.     while (len > 0) {
    56.         first = (buf == buf_ptr);
    57.         q = packet;
                ^
    58.         *q++ = 0x47;
    59.         b = (s->pid >> 8);

libavformat/mpegtsenc.c:58:10: Assignment
    56.         first = (buf == buf_ptr);
    57.         q = packet;
    58.         *q++ = 0x47;
                 ^
    59.         b = (s->pid >> 8);
    60.         if (first)

libavformat/mpegtsenc.c:62:10: Assignment
    60.         if (first)
    61.             b |= 0x40;
    62.         *q++ = b;
                 ^
    63.         *q++ = s->pid;
    64.         *q++ = 0x10 | s->cc;

libavformat/mpegtsenc.c:63:10: Assignment
    61.             b |= 0x40;
    62.         *q++ = b;
    63.         *q++ = s->pid;
                 ^
    64.         *q++ = 0x10 | s->cc;
    65.         s->cc = (s->cc + 1) & 0xf;

libavformat/mpegtsenc.c:64:10: Assignment
    62.         *q++ = b;
    63.         *q++ = s->pid;
    64.         *q++ = 0x10 | s->cc;
                 ^
    65.         s->cc = (s->cc + 1) & 0xf;
    66.         if (first)

libavformat/mpegtsenc.c:71:9: Array access: Offset added: [5, 189] (⇐ [4, 5] + [1, 184]) Size: 188 by call to `mpegts_write_section1` 
    69.         if (len1 > len)
    70.             len1 = len;
    71.         memcpy(q, buf_ptr, len1);
                ^
    72.         q += len1;
    73.         /* add known padding data */

static void mpegts_write_section(MpegTSSection *s, uint8_t *buf, int len)
{
    unsigned int crc;
    unsigned char packet[TS_PACKET_SIZE];
    const unsigned char *buf_ptr;
    unsigned char *q;
    int first, b, len1, left;
    crc = bswap_32(av_crc(av_crc_get_table(AV_CRC_32_IEEE), -1, buf, len - 4));
    buf[len - 4] = (crc >> 24) & 0xff;
    buf[len - 3] = (crc >> 16) & 0xff;
    buf[len - 2] = (crc >> 8) & 0xff;
    buf[len - 1] = (crc) & 0xff;
    buf_ptr = buf;
    while (len > 0) {
        first = (buf == buf_ptr);
        q = packet;
        *q++ = 0x47;
        b = (s->pid >> 8);
        if (first)
            b |= 0x40;
        *q++ = b;
        *q++ = s->pid;
        *q++ = 0x10 | s->cc;
        s->cc = (s->cc + 1) & 0xf;
        if (first)
            *q++ = 0;
        len1 = TS_PACKET_SIZE - (q - packet);
        if (len1 > len)
            len1 = len;
        memcpy(q, buf_ptr, len1);
        q += len1;
        left = TS_PACKET_SIZE - (q - packet);
        if (left > 0)
            memset(q, 0xff, left);
        s->write_packet(s, packet);
        buf_ptr += len1;
        len -= len1;
    }
}
['static void mpegts_write_pat(AVFormatContext *s)\n{\n    MpegTSWrite *ts = s->priv_data;\n    MpegTSService *service;\n    uint8_t data[1012], *q;\n    int i;\n    q = data;\n    for(i = 0; i < ts->nb_services; i++) {\n        service = ts->services[i];\n        put16(&q, service->sid);\n        put16(&q, 0xe000 | service->pmt.pid);\n    }\n    mpegts_write_section1(&ts->pat, PAT_TID, ts->tsid, 0, 0, 0,\n                          data, q - data);\n}', 'static int mpegts_write_section1(MpegTSSection *s, int tid, int id,\n                          int version, int sec_num, int last_sec_num,\n                          uint8_t *buf, int len)\n{\n    uint8_t section[1024], *q;\n    unsigned int tot_len;\n    tot_len = 3 + 5 + len + 4;\n    if (tot_len > 1024)\n        return -1;\n    q = section;\n    *q++ = tid;\n    put16(&q, 0xb000 | (len + 5 + 4));\n    put16(&q, id);\n    *q++ = 0xc1 | (version << 1);\n    *q++ = sec_num;\n    *q++ = last_sec_num;\n    memcpy(q, buf, len);\n    mpegts_write_section(s, section, tot_len);\n    return 0;\n}', 'static void mpegts_write_section(MpegTSSection *s, uint8_t *buf, int len)\n{\n    unsigned int crc;\n    unsigned char packet[TS_PACKET_SIZE];\n    const unsigned char *buf_ptr;\n    unsigned char *q;\n    int first, b, len1, left;\n    crc = bswap_32(av_crc(av_crc_get_table(AV_CRC_32_IEEE), -1, buf, len - 4));\n    buf[len - 4] = (crc >> 24) & 0xff;\n    buf[len - 3] = (crc >> 16) & 0xff;\n    buf[len - 2] = (crc >> 8) & 0xff;\n    buf[len - 1] = (crc) & 0xff;\n    buf_ptr = buf;\n    while (len > 0) {\n        first = (buf == buf_ptr);\n        q = packet;\n        *q++ = 0x47;\n        b = (s->pid >> 8);\n        if (first)\n            b |= 0x40;\n        *q++ = b;\n        *q++ = s->pid;\n        *q++ = 0x10 | s->cc;\n        s->cc = (s->cc + 1) & 0xf;\n        if (first)\n            *q++ = 0;\n        len1 = TS_PACKET_SIZE - (q - packet);\n        if (len1 > len)\n            len1 = len;\n        memcpy(q, buf_ptr, len1);\n        q += len1;\n        left = TS_PACKET_SIZE - (q - packet);\n        if (left > 0)\n            memset(q, 0xff, left);\n        s->write_packet(s, packet);\n        buf_ptr += len1;\n        len -= len1;\n    }\n}']