libavformat/rtp_h264.c:390: error: Buffer Overrun L3
  Offset: [-43, 79] Size: 80 by call to `sdp_parse_fmtp_config_h264`.

libavformat/rtp_h264.c:387:16: Call
385. 
386.         /* loop on each attribute */
387.         while (rtsp_next_attr_and_value
                    ^
388.                (&p, attr, sizeof(attr), value, sizeof(value))) {
389.             /* grab the codec extra_data from the config parameter of the fmtp line */

libavformat/rtsp.c:310:1: Parameter `*value`
  308. * because it is used in rtp_h264.c, which is forthcoming.
  309. */
  310. int rtsp_next_attr_and_value(const char **p, char *attr, int attr_size, char *value, int value_size)
       ^
  311. {
  312.     skip_spaces(p);

libavformat/rtp_h264.c:390:13: Call
388.                (&p, attr, sizeof(attr), value, sizeof(value))) {
389.             /* grab the codec extra_data from the config parameter of the fmtp line */
390.             sdp_parse_fmtp_config_h264(stream, h264_data, attr, value);
                 ^
391.         }
392.     } else if (av_strstart(p, "cliprect:", &p)) {

libavformat/rtp_h264.c:130:13: Assignment
  128.                 *dst++ = *value++;
  129.             }
  130.             *dst++ = '\0';
                   ^
  131. 
  132.             if (*value == ',')

libavformat/rtp_h264.c:135:26: Call
  133.                 value++;
  134. 
  135.             packet_size= av_base64_decode(decoded_packet, base64packet, sizeof(decoded_packet));
                                ^
  136.             if (packet_size) {
  137.                 uint8_t *dest= av_malloc(packet_size+sizeof(start_sequence)+codec->extradata_size);

libavutil/base64.c:46:1: <Offset trace>
44. };
45. 
46. int av_base64_decode(uint8_t * out, const char *in, int out_length)
    ^
47. {
48.     int i, v;

libavutil/base64.c:46:1: Parameter `*in`
    44. };
    45. 
    46. int av_base64_decode(uint8_t * out, const char *in, int out_length)
        ^
    47. {
    48.     int i, v;

libavutil/base64.c:53:9: Assignment
    51.     v = 0;
    52.     for (i = 0; in[i] && in[i] != '='; i++) {
    53.         unsigned int index= in[i]-43;
                ^
    54.         if (index>=FF_ARRAY_ELEMS(map2) || map2[index] == 0xff)
    55.             return -1;

libavutil/base64.c:32:1: <Length trace>
30. 
31. /* ---------------- private code */
32. static const uint8_t map2[] =
    ^
33. {
34.     0x3e, 0xff, 0xff, 0xff, 0x3f, 0x34, 0x35, 0x36,

libavutil/base64.c:32:1: Array declaration
    30. 
    31. /* ---------------- private code */
    32. static const uint8_t map2[] =
        ^
    33. {
    34.     0x3e, 0xff, 0xff, 0xff, 0x3f, 0x34, 0x35, 0x36,

libavutil/base64.c:54:44: Array access: Offset: [-43, 79] Size: 80 by call to `sdp_parse_fmtp_config_h264` 
    52.     for (i = 0; in[i] && in[i] != '='; i++) {
    53.         unsigned int index= in[i]-43;
    54.         if (index>=FF_ARRAY_ELEMS(map2) || map2[index] == 0xff)
                                                   ^
    55.             return -1;
    56.         v = (v << 6) + map2[index];

int av_base64_decode(uint8_t * out, const char *in, int out_length)
{
    int i, v;
    uint8_t *dst = out;
    v = 0;
    for (i = 0; in[i] && in[i] != '='; i++) {
        unsigned int index= in[i]-43;
        if (index>=FF_ARRAY_ELEMS(map2) || map2[index] == 0xff)
            return -1;
        v = (v << 6) + map2[index];
        if (i & 3) {
            if (dst - out < out_length) {
                *dst++ = v >> (6 - 2 * (i & 3));
            }
        }
    }
    return dst - out;
}
['static int parse_h264_sdp_line(AVStream * stream, PayloadContext *h264_data,\n                               const char *line)\n{\n    AVCodecContext *codec = stream->codec;\n    const char *p = line;\n    assert(h264_data->cookie == MAGIC_COOKIE);\n    if (av_strstart(p, "framesize:", &p)) {\n        char buf1[50];\n        char *dst = buf1;\n        while (*p && *p == \' \') p++;\n        while (*p && *p != \' \') p++;\n        while (*p && *p == \' \') p++;\n        while (*p && *p != \'-\' && (buf1 - dst) < sizeof(buf1) - 1) {\n            *dst++ = *p++;\n        }\n        *dst = \'\\0\';\n        codec->width = atoi(buf1);\n        codec->height = atoi(p + 1);\n        codec->pix_fmt = PIX_FMT_YUV420P;\n    } else if (av_strstart(p, "fmtp:", &p)) {\n        char attr[256];\n        char value[4096];\n        while (*p && *p == \' \') p++;\n        while (*p && *p != \' \') p++;\n        while (*p && *p == \' \') p++;\n        while (rtsp_next_attr_and_value\n               (&p, attr, sizeof(attr), value, sizeof(value))) {\n            sdp_parse_fmtp_config_h264(stream, h264_data, attr, value);\n        }\n    } else if (av_strstart(p, "cliprect:", &p)) {\n    }\n    av_set_pts_info(stream, 33, 1, 90000);\n    return 0;\n}', 'int rtsp_next_attr_and_value(const char **p, char *attr, int attr_size, char *value, int value_size)\n{\n    skip_spaces(p);\n    if(**p)\n    {\n        get_word_sep(attr, attr_size, "=", p);\n        if (**p == \'=\')\n            (*p)++;\n        get_word_sep(value, value_size, ";", p);\n        if (**p == \';\')\n            (*p)++;\n        return 1;\n    }\n    return 0;\n}', 'static void sdp_parse_fmtp_config_h264(AVStream * stream,\n                                       PayloadContext * h264_data,\n                                       char *attr, char *value)\n{\n    AVCodecContext *codec = stream->codec;\n    assert(codec->codec_id == CODEC_ID_H264);\n    assert(h264_data != NULL);\n    if (!strcmp(attr, "packetization-mode")) {\n        av_log(NULL, AV_LOG_DEBUG, "H.264/RTP Packetization Mode: %d\\n", atoi(value));\n        h264_data->packetization_mode = atoi(value);\n        if (h264_data->packetization_mode > 1)\n            av_log(stream, AV_LOG_ERROR,\n                   "H.264/RTP Interleaved RTP mode is not supported yet.");\n    } else if (!strcmp(attr, "profile-level-id")) {\n        if (strlen(value) == 6) {\n            char buffer[3];\n            uint8_t profile_idc;\n            uint8_t profile_iop;\n            uint8_t level_idc;\n            buffer[0] = value[0]; buffer[1] = value[1]; buffer[2] = \'\\0\';\n            profile_idc = strtol(buffer, NULL, 16);\n            buffer[0] = value[2]; buffer[1] = value[3];\n            profile_iop = strtol(buffer, NULL, 16);\n            buffer[0] = value[4]; buffer[1] = value[5];\n            level_idc = strtol(buffer, NULL, 16);\n            av_log(NULL, AV_LOG_DEBUG,\n                   "H.264/RTP Profile IDC: %x Profile IOP: %x Level: %x\\n",\n                   profile_idc, profile_iop, level_idc);\n            h264_data->profile_idc = profile_idc;\n            h264_data->profile_iop = profile_iop;\n            h264_data->level_idc = level_idc;\n        }\n    } else  if (!strcmp(attr, "sprop-parameter-sets")) {\n        uint8_t start_sequence[]= { 0, 0, 1 };\n        codec->extradata_size= 0;\n        codec->extradata= NULL;\n        while (*value) {\n            char base64packet[1024];\n            uint8_t decoded_packet[1024];\n            uint32_t packet_size;\n            char *dst = base64packet;\n            while (*value && *value != \',\'\n                   && (dst - base64packet) < sizeof(base64packet) - 1) {\n                *dst++ = *value++;\n            }\n            *dst++ = \'\\0\';\n            if (*value == \',\')\n                value++;\n            packet_size= av_base64_decode(decoded_packet, base64packet, sizeof(decoded_packet));\n            if (packet_size) {\n                uint8_t *dest= av_malloc(packet_size+sizeof(start_sequence)+codec->extradata_size);\n                if(dest)\n                {\n                    if(codec->extradata_size)\n                    {\n                        memcpy(dest, codec->extradata, codec->extradata_size);\n                        av_free(codec->extradata);\n                    }\n                    memcpy(dest+codec->extradata_size, start_sequence, sizeof(start_sequence));\n                    memcpy(dest+codec->extradata_size+sizeof(start_sequence), decoded_packet, packet_size);\n                    codec->extradata= dest;\n                    codec->extradata_size+= sizeof(start_sequence)+packet_size;\n                } else {\n                    av_log(NULL, AV_LOG_ERROR, "H.264/RTP Unable to allocate memory for extradata!");\n                }\n            }\n        }\n        av_log(NULL, AV_LOG_DEBUG, "H.264/RTP Extradata set to %p (size: %d)!", codec->extradata, codec->extradata_size);\n    }\n}', "int av_base64_decode(uint8_t * out, const char *in, int out_length)\n{\n    int i, v;\n    uint8_t *dst = out;\n    v = 0;\n    for (i = 0; in[i] && in[i] != '='; i++) {\n        unsigned int index= in[i]-43;\n        if (index>=FF_ARRAY_ELEMS(map2) || map2[index] == 0xff)\n            return -1;\n        v = (v << 6) + map2[index];\n        if (i & 3) {\n            if (dst - out < out_length) {\n                *dst++ = v >> (6 - 2 * (i & 3));\n            }\n        }\n    }\n    return dst - out;\n}"]