| Index: source/patched-ffmpeg-mt/ffserver.c | 
| =================================================================== | 
| --- source/patched-ffmpeg-mt/ffserver.c	(revision 65184) | 
| +++ source/patched-ffmpeg-mt/ffserver.c	(working copy) | 
| @@ -92,6 +92,10 @@ | 
| "RTSP_SEND_PACKET", | 
| }; | 
|  | 
| +#if !FF_API_MAX_STREAMS | 
| +#define MAX_STREAMS 20 | 
| +#endif | 
| + | 
| #define IOBUFFER_INIT_SIZE 8192 | 
|  | 
| /* timeouts are in ms */ | 
| @@ -2930,7 +2934,7 @@ | 
| struct in_addr my_ip) | 
| { | 
| AVFormatContext *avc; | 
| -    AVStream avs[MAX_STREAMS]; | 
| +    AVStream *avs = NULL; | 
| int i; | 
|  | 
| avc =  avformat_alloc_context(); | 
| @@ -2948,14 +2952,29 @@ | 
| snprintf(avc->filename, 1024, "rtp://0.0.0.0"); | 
| } | 
|  | 
| +#if !FF_API_MAX_STREAMS | 
| +    if (avc->nb_streams >= INT_MAX/sizeof(*avc->streams) || | 
| +        !(avc->streams = av_malloc(avc->nb_streams * sizeof(*avc->streams)))) | 
| +        goto sdp_done; | 
| +#endif | 
| +    if (avc->nb_streams >= INT_MAX/sizeof(*avs) || | 
| +        !(avs = av_malloc(avc->nb_streams * sizeof(*avs)))) | 
| +        goto sdp_done; | 
| + | 
| for(i = 0; i < stream->nb_streams; i++) { | 
| avc->streams[i] = &avs[i]; | 
| avc->streams[i]->codec = stream->streams[i]->codec; | 
| } | 
| *pbuffer = av_mallocz(2048); | 
| avf_sdp_create(&avc, 1, *pbuffer, 2048); | 
| + | 
| + sdp_done: | 
| +#if !FF_API_MAX_STREAMS | 
| +    av_free(avc->streams); | 
| +#endif | 
| av_metadata_free(&avc->metadata); | 
| av_free(avc); | 
| +    av_free(avs); | 
|  | 
| return strlen(*pbuffer); | 
| } | 
|  |