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

libavformat/movenc.c:978:1: start of procedure mov_write_hdlr_tag()
976. }
977. 
978. static int mov_write_hdlr_tag(ByteIOContext *pb, MOVTrack *track)
     ^
979. {
980.     const char *hdlr, *descr = NULL, *hdlr_type = NULL;

libavformat/movenc.c:980:5: 
978. static int mov_write_hdlr_tag(ByteIOContext *pb, MOVTrack *track)
979. {
980.     const char *hdlr, *descr = NULL, *hdlr_type = NULL;
         ^
981.     int64_t pos = url_ftell(pb);
982. 

libavformat/movenc.c:981:5: 
979. {
980.     const char *hdlr, *descr = NULL, *hdlr_type = NULL;
981.     int64_t pos = url_ftell(pb);
         ^
982. 
983.     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:983:10: Taking false branch
981.     int64_t pos = url_ftell(pb);
982. 
983.     if (!track) { /* no media --> data handler */
              ^
984.         hdlr = "dhlr";
985.         hdlr_type = "url ";

libavformat/movenc.c:988:17: Condition is false
986.         descr = "DataHandler";
987.     } else {
988.         hdlr = (track->mode == MODE_MOV) ? "mhlr" : "\0\0\0\0";
                     ^
989.         if (track->enc->codec_type == CODEC_TYPE_VIDEO) {
990.             hdlr_type = "vide";

libavformat/movenc.c:988:16: 
986.         descr = "DataHandler";
987.     } else {
988.         hdlr = (track->mode == MODE_MOV) ? "mhlr" : "\0\0\0\0";
                    ^
989.         if (track->enc->codec_type == CODEC_TYPE_VIDEO) {
990.             hdlr_type = "vide";

libavformat/movenc.c:988:9: 
986.         descr = "DataHandler";
987.     } else {
988.         hdlr = (track->mode == MODE_MOV) ? "mhlr" : "\0\0\0\0";
             ^
989.         if (track->enc->codec_type == CODEC_TYPE_VIDEO) {
990.             hdlr_type = "vide";

libavformat/movenc.c:989:13: Taking false branch
987.     } else {
988.         hdlr = (track->mode == MODE_MOV) ? "mhlr" : "\0\0\0\0";
989.         if (track->enc->codec_type == CODEC_TYPE_VIDEO) {
                 ^
990.             hdlr_type = "vide";
991.             descr = "VideoHandler";

libavformat/movenc.c:992:20: Taking false branch
990.             hdlr_type = "vide";
991.             descr = "VideoHandler";
992.         } else if (track->enc->codec_type == CODEC_TYPE_AUDIO) {
                        ^
993.             hdlr_type = "soun";
994.             descr = "SoundHandler";

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

libavformat/movenc.c:1002:5: Skipping put_be32(): empty list of specs
1000.     }
1001. 
1002.     put_be32(pb, 0); /* size */
          ^
1003.     put_tag(pb, "hdlr");
1004.     put_be32(pb, 0); /* Version & flags */

libavformat/movenc.c:1003:5: Skipping put_tag(): empty list of specs
1001. 
1002.     put_be32(pb, 0); /* size */
1003.     put_tag(pb, "hdlr");
          ^
1004.     put_be32(pb, 0); /* Version & flags */
1005.     put_buffer(pb, hdlr, 4); /* handler */

libavformat/movenc.c:1004:5: Skipping put_be32(): empty list of specs
1002.     put_be32(pb, 0); /* size */
1003.     put_tag(pb, "hdlr");
1004.     put_be32(pb, 0); /* Version & flags */
          ^
1005.     put_buffer(pb, hdlr, 4); /* handler */
1006.     put_tag(pb, hdlr_type); /* handler type */

libavformat/movenc.c:1005:5: Skipping put_buffer(): empty list of specs
1003.     put_tag(pb, "hdlr");
1004.     put_be32(pb, 0); /* Version & flags */
1005.     put_buffer(pb, hdlr, 4); /* handler */
          ^
1006.     put_tag(pb, hdlr_type); /* handler type */
1007.     put_be32(pb ,0); /* reserved */

libavformat/movenc.c:1006:5: Skipping put_tag(): empty list of specs
1004.     put_be32(pb, 0); /* Version & flags */
1005.     put_buffer(pb, hdlr, 4); /* handler */
1006.     put_tag(pb, hdlr_type); /* handler type */
          ^
1007.     put_be32(pb ,0); /* reserved */
1008.     put_be32(pb ,0); /* reserved */

libavformat/movenc.c:1007:5: Skipping put_be32(): empty list of specs
1005.     put_buffer(pb, hdlr, 4); /* handler */
1006.     put_tag(pb, hdlr_type); /* handler type */
1007.     put_be32(pb ,0); /* reserved */
          ^
1008.     put_be32(pb ,0); /* reserved */
1009.     put_be32(pb ,0); /* reserved */

libavformat/movenc.c:1008:5: Skipping put_be32(): empty list of specs
1006.     put_tag(pb, hdlr_type); /* handler type */
1007.     put_be32(pb ,0); /* reserved */
1008.     put_be32(pb ,0); /* reserved */
          ^
1009.     put_be32(pb ,0); /* reserved */
1010.     put_byte(pb, strlen(descr)); /* string counter */

libavformat/movenc.c:1009:5: Skipping put_be32(): empty list of specs
1007.     put_be32(pb ,0); /* reserved */
1008.     put_be32(pb ,0); /* reserved */
1009.     put_be32(pb ,0); /* reserved */
          ^
1010.     put_byte(pb, strlen(descr)); /* string counter */
1011.     put_buffer(pb, descr, strlen(descr)); /* handler description */

libavformat/movenc.c:1010:5: 
1008.     put_be32(pb ,0); /* reserved */
1009.     put_be32(pb ,0); /* reserved */
1010.     put_byte(pb, strlen(descr)); /* string counter */
          ^
1011.     put_buffer(pb, descr, strlen(descr)); /* handler description */
1012.     return updateSize(pb, pos);
