libavformat/movenc.c:1017: error: Null Dereference
  pointer `descr` last assigned on line 986 could be null and is dereferenced by call to `strlen()` at line 1017, column 22.

libavformat/movenc.c:984:1: start of procedure mov_write_hdlr_tag()
982. }
983. 
984. static int mov_write_hdlr_tag(ByteIOContext *pb, MOVTrack *track)
     ^
985. {
986.     const char *hdlr, *descr = NULL, *hdlr_type = NULL;

libavformat/movenc.c:986:5: 
984. static int mov_write_hdlr_tag(ByteIOContext *pb, MOVTrack *track)
985. {
986.     const char *hdlr, *descr = NULL, *hdlr_type = NULL;
         ^
987.     int64_t pos = url_ftell(pb);
988. 

libavformat/movenc.c:987:5: 
985. {
986.     const char *hdlr, *descr = NULL, *hdlr_type = NULL;
987.     int64_t pos = url_ftell(pb);
         ^
988. 
989.     if (!track) { /* no media --> data handler */

libavformat/aviobuf.c:186:1: start of procedure url_ftell()
  184. }
  185. 
  186. int64_t url_ftell(ByteIOContext *s)
       ^
  187. {
  188.     return url_fseek(s, 0, SEEK_CUR);

libavformat/aviobuf.c:188:5: Skipping url_fseek(): empty list of specs
  186. int64_t url_ftell(ByteIOContext *s)
  187. {
  188.     return url_fseek(s, 0, SEEK_CUR);
           ^
  189. }
  190. 

libavformat/aviobuf.c:189:1: return from a call to url_ftell
  187. {
  188.     return url_fseek(s, 0, SEEK_CUR);
  189. }
       ^
  190. 
  191. int64_t url_fsize(ByteIOContext *s)

libavformat/movenc.c:989:10: Taking false branch
987.     int64_t pos = url_ftell(pb);
988. 
989.     if (!track) { /* no media --> data handler */
              ^
990.         hdlr = "dhlr";
991.         hdlr_type = "url ";

libavformat/movenc.c:994:17: Condition is true
992.         descr = "DataHandler";
993.     } else {
994.         hdlr = (track->mode == MODE_MOV) ? "mhlr" : "\0\0\0\0";
                     ^
995.         if (track->enc->codec_type == CODEC_TYPE_VIDEO) {
996.             hdlr_type = "vide";

libavformat/movenc.c:994:16: 
992.         descr = "DataHandler";
993.     } else {
994.         hdlr = (track->mode == MODE_MOV) ? "mhlr" : "\0\0\0\0";
                    ^
995.         if (track->enc->codec_type == CODEC_TYPE_VIDEO) {
996.             hdlr_type = "vide";

libavformat/movenc.c:994:9: 
992.         descr = "DataHandler";
993.     } else {
994.         hdlr = (track->mode == MODE_MOV) ? "mhlr" : "\0\0\0\0";
             ^
995.         if (track->enc->codec_type == CODEC_TYPE_VIDEO) {
996.             hdlr_type = "vide";

libavformat/movenc.c:995:13: Taking false branch
993.     } else {
994.         hdlr = (track->mode == MODE_MOV) ? "mhlr" : "\0\0\0\0";
995.         if (track->enc->codec_type == CODEC_TYPE_VIDEO) {
                 ^
996.             hdlr_type = "vide";
997.             descr = "VideoHandler";

libavformat/movenc.c:998:20: Taking false branch
 996.             hdlr_type = "vide";
 997.             descr = "VideoHandler";
 998.         } else if (track->enc->codec_type == CODEC_TYPE_AUDIO) {
                         ^
 999.             hdlr_type = "soun";
1000.             descr = "SoundHandler";

libavformat/movenc.c:1001:20: Taking false branch
 999.             hdlr_type = "soun";
1000.             descr = "SoundHandler";
1001.         } else if (track->enc->codec_type == CODEC_TYPE_SUBTITLE) {
                         ^
1002.             if (track->tag == MKTAG('t','x','3','g')) hdlr_type = "sbtl";
1003.             else                                      hdlr_type = "text";

libavformat/movenc.c:1008:5: Skipping put_be32(): empty list of specs
1006.     }
1007. 
1008.     put_be32(pb, 0); /* size */
          ^
1009.     put_tag(pb, "hdlr");
1010.     put_be32(pb, 0); /* Version & flags */

libavformat/movenc.c:1009:5: Skipping put_tag(): empty list of specs
1007. 
1008.     put_be32(pb, 0); /* size */
1009.     put_tag(pb, "hdlr");
          ^
1010.     put_be32(pb, 0); /* Version & flags */
1011.     put_buffer(pb, hdlr, 4); /* handler */

libavformat/movenc.c:1010:5: Skipping put_be32(): empty list of specs
1008.     put_be32(pb, 0); /* size */
1009.     put_tag(pb, "hdlr");
1010.     put_be32(pb, 0); /* Version & flags */
          ^
1011.     put_buffer(pb, hdlr, 4); /* handler */
1012.     put_tag(pb, hdlr_type); /* handler type */

libavformat/movenc.c:1011:5: Skipping put_buffer(): empty list of specs
1009.     put_tag(pb, "hdlr");
1010.     put_be32(pb, 0); /* Version & flags */
1011.     put_buffer(pb, hdlr, 4); /* handler */
          ^
1012.     put_tag(pb, hdlr_type); /* handler type */
1013.     put_be32(pb ,0); /* reserved */

libavformat/movenc.c:1012:5: Skipping put_tag(): empty list of specs
1010.     put_be32(pb, 0); /* Version & flags */
1011.     put_buffer(pb, hdlr, 4); /* handler */
1012.     put_tag(pb, hdlr_type); /* handler type */
          ^
1013.     put_be32(pb ,0); /* reserved */
1014.     put_be32(pb ,0); /* reserved */

libavformat/movenc.c:1013:5: Skipping put_be32(): empty list of specs
1011.     put_buffer(pb, hdlr, 4); /* handler */
1012.     put_tag(pb, hdlr_type); /* handler type */
1013.     put_be32(pb ,0); /* reserved */
          ^
1014.     put_be32(pb ,0); /* reserved */
1015.     put_be32(pb ,0); /* reserved */

libavformat/movenc.c:1014:5: Skipping put_be32(): empty list of specs
1012.     put_tag(pb, hdlr_type); /* handler type */
1013.     put_be32(pb ,0); /* reserved */
1014.     put_be32(pb ,0); /* reserved */
          ^
1015.     put_be32(pb ,0); /* reserved */
1016.     if (!track || track->mode == MODE_MOV)

libavformat/movenc.c:1015:5: Skipping put_be32(): empty list of specs
1013.     put_be32(pb ,0); /* reserved */
1014.     put_be32(pb ,0); /* reserved */
1015.     put_be32(pb ,0); /* reserved */
          ^
1016.     if (!track || track->mode == MODE_MOV)
1017.         put_byte(pb, strlen(descr)); /* pascal string */

libavformat/movenc.c:1016:10: Taking false branch
1014.     put_be32(pb ,0); /* reserved */
1015.     put_be32(pb ,0); /* reserved */
1016.     if (!track || track->mode == MODE_MOV)
               ^
1017.         put_byte(pb, strlen(descr)); /* pascal string */
1018.     put_buffer(pb, descr, strlen(descr)); /* handler description */

libavformat/movenc.c:1016:19: Taking true branch
1014.     put_be32(pb ,0); /* reserved */
1015.     put_be32(pb ,0); /* reserved */
1016.     if (!track || track->mode == MODE_MOV)
                        ^
1017.         put_byte(pb, strlen(descr)); /* pascal string */
1018.     put_buffer(pb, descr, strlen(descr)); /* handler description */

libavformat/movenc.c:1017:9: 
1015.     put_be32(pb ,0); /* reserved */
1016.     if (!track || track->mode == MODE_MOV)
1017.         put_byte(pb, strlen(descr)); /* pascal string */
              ^
1018.     put_buffer(pb, descr, strlen(descr)); /* handler description */
1019.     if (track && track->mode != MODE_MOV)
