libavformat/rtsp.c:540: error: Null Dereference
  pointer `st` last assigned on line 525 could be null and is dereferenced at line 540, column 56.

libavformat/rtsp.c:522:1: start of procedure rtsp_open_transport_ctx()
520. }
521. 
522. static int rtsp_open_transport_ctx(AVFormatContext *s, RTSPStream *rtsp_st)
     ^
523. {
524.     RTSPState *rt = s->priv_data;

libavformat/rtsp.c:524:5: 
522. static int rtsp_open_transport_ctx(AVFormatContext *s, RTSPStream *rtsp_st)
523. {
524.     RTSPState *rt = s->priv_data;
         ^
525.     AVStream *st = NULL;
526. 

libavformat/rtsp.c:525:5: 
523. {
524.     RTSPState *rt = s->priv_data;
525.     AVStream *st = NULL;
         ^
526. 
527.     /* open the RTP context */

libavformat/rtsp.c:528:9: Taking false branch
526. 
527.     /* open the RTP context */
528.     if (rtsp_st->stream_index >= 0)
             ^
529.         st = s->streams[rtsp_st->stream_index];
530.     if (!st)

libavformat/rtsp.c:530:10: Taking true branch
528.     if (rtsp_st->stream_index >= 0)
529.         st = s->streams[rtsp_st->stream_index];
530.     if (!st)
              ^
531.         s->ctx_flags |= AVFMTCTX_NOHEADER;
532. 

libavformat/rtsp.c:531:9: 
529.         st = s->streams[rtsp_st->stream_index];
530.     if (!st)
531.         s->ctx_flags |= AVFMTCTX_NOHEADER;
             ^
532. 
533.     if (s->oformat && CONFIG_RTSP_MUXER) {

libavformat/rtsp.c:533:9: Taking false branch
531.         s->ctx_flags |= AVFMTCTX_NOHEADER;
532. 
533.     if (s->oformat && CONFIG_RTSP_MUXER) {
             ^
534.         rtsp_st->transport_priv = ff_rtp_chain_mux_open(s, st,
535.                                       rtsp_st->rtp_handle,

libavformat/rtsp.c:539:16: Taking true branch
537.         /* Ownership of rtp_handle is passed to the rtp mux context */
538.         rtsp_st->rtp_handle = NULL;
539.     } else if (rt->transport == RTSP_TRANSPORT_RDT && CONFIG_RTPDEC)
                    ^
540.         rtsp_st->transport_priv = ff_rdt_parse_open(s, st->index,
541.                                             rtsp_st->dynamic_protocol_context,

libavformat/rtsp.c:539:55: Taking true branch
537.         /* Ownership of rtp_handle is passed to the rtp mux context */
538.         rtsp_st->rtp_handle = NULL;
539.     } else if (rt->transport == RTSP_TRANSPORT_RDT && CONFIG_RTPDEC)
                                                           ^
540.         rtsp_st->transport_priv = ff_rdt_parse_open(s, st->index,
541.                                             rtsp_st->dynamic_protocol_context,

libavformat/rtsp.c:540:9: 
538.         rtsp_st->rtp_handle = NULL;
539.     } else if (rt->transport == RTSP_TRANSPORT_RDT && CONFIG_RTPDEC)
540.         rtsp_st->transport_priv = ff_rdt_parse_open(s, st->index,
             ^
541.                                             rtsp_st->dynamic_protocol_context,
542.                                             rtsp_st->dynamic_handler);

static int rtsp_open_transport_ctx(AVFormatContext *s, RTSPStream *rtsp_st)
{
    RTSPState *rt = s->priv_data;
    AVStream *st = NULL;
    if (rtsp_st->stream_index >= 0)
        st = s->streams[rtsp_st->stream_index];
    if (!st)
        s->ctx_flags |= AVFMTCTX_NOHEADER;
    if (s->oformat && CONFIG_RTSP_MUXER) {
        rtsp_st->transport_priv = ff_rtp_chain_mux_open(s, st,
                                      rtsp_st->rtp_handle,
                                      RTSP_TCP_MAX_PACKET_SIZE);
        rtsp_st->rtp_handle = NULL;
    } else if (rt->transport == RTSP_TRANSPORT_RDT && CONFIG_RTPDEC)
        rtsp_st->transport_priv = ff_rdt_parse_open(s, st->index,
                                            rtsp_st->dynamic_protocol_context,
                                            rtsp_st->dynamic_handler);
    else if (CONFIG_RTPDEC)
        rtsp_st->transport_priv = rtp_parse_open(s, st, rtsp_st->rtp_handle,
                                         rtsp_st->sdp_payload_type,
            (rt->lower_transport == RTSP_LOWER_TRANSPORT_TCP || !s->max_delay)
            ? 0 : RTP_REORDER_QUEUE_DEFAULT_SIZE);
    if (!rtsp_st->transport_priv) {
         return AVERROR(ENOMEM);
    } else if (rt->transport != RTSP_TRANSPORT_RDT && CONFIG_RTPDEC) {
        if (rtsp_st->dynamic_handler) {
            rtp_parse_set_dynamic_protocol(rtsp_st->transport_priv,
                                           rtsp_st->dynamic_protocol_context,
                                           rtsp_st->dynamic_handler);
        }
    }
    return 0;
}
['static int rtsp_open_transport_ctx(AVFormatContext *s, RTSPStream *rtsp_st)\n{\n    RTSPState *rt = s->priv_data;\n    AVStream *st = NULL;\n    if (rtsp_st->stream_index >= 0)\n        st = s->streams[rtsp_st->stream_index];\n    if (!st)\n        s->ctx_flags |= AVFMTCTX_NOHEADER;\n    if (s->oformat && CONFIG_RTSP_MUXER) {\n        rtsp_st->transport_priv = ff_rtp_chain_mux_open(s, st,\n                                      rtsp_st->rtp_handle,\n                                      RTSP_TCP_MAX_PACKET_SIZE);\n        rtsp_st->rtp_handle = NULL;\n    } else if (rt->transport == RTSP_TRANSPORT_RDT && CONFIG_RTPDEC)\n        rtsp_st->transport_priv = ff_rdt_parse_open(s, st->index,\n                                            rtsp_st->dynamic_protocol_context,\n                                            rtsp_st->dynamic_handler);\n    else if (CONFIG_RTPDEC)\n        rtsp_st->transport_priv = rtp_parse_open(s, st, rtsp_st->rtp_handle,\n                                         rtsp_st->sdp_payload_type,\n            (rt->lower_transport == RTSP_LOWER_TRANSPORT_TCP || !s->max_delay)\n            ? 0 : RTP_REORDER_QUEUE_DEFAULT_SIZE);\n    if (!rtsp_st->transport_priv) {\n         return AVERROR(ENOMEM);\n    } else if (rt->transport != RTSP_TRANSPORT_RDT && CONFIG_RTPDEC) {\n        if (rtsp_st->dynamic_handler) {\n            rtp_parse_set_dynamic_protocol(rtsp_st->transport_priv,\n                                           rtsp_st->dynamic_protocol_context,\n                                           rtsp_st->dynamic_handler);\n        }\n    }\n    return 0;\n}']