libavformat/mov.c:275: error: Integer Overflow L2
  ([-oo, -1+max(9223372036854775807, `atom.size`)] + 8):signed64.

libavformat/mov.c:254:1: <LHS trace>
252. }
253. 
254. static int mov_read_default(MOVContext *c, AVIOContext *pb, MOVAtom atom)
     ^
255. {
256.     int64_t total_size = 0;

libavformat/mov.c:254:1: Parameter `atom.size`
252. }
253. 
254. static int mov_read_default(MOVContext *c, AVIOContext *pb, MOVAtom atom)
     ^
255. {
256.     int64_t total_size = 0;

libavformat/mov.c:272:9: Assignment
270.         av_dlog(c->fc, "type: %08x '%.4s' parent:'%.4s' sz: %"PRId64" %"PRId64" %"PRId64"\n",
271.                 a.type, (char*)&a.type, (char*)&atom.type, a.size, total_size, atom.size);
272.         total_size += 8;
             ^
273.         if (a.size == 1) { /* 64 bit extended size */
274.             a.size = get_be64(pb) - 8;

libavformat/mov.c:275:13: Binary operation: ([-oo, -1+max(9223372036854775807, atom.size)] + 8):signed64
273.         if (a.size == 1) { /* 64 bit extended size */
274.             a.size = get_be64(pb) - 8;
275.             total_size += 8;
                 ^
276.         }
277.         if (a.size == 0) {

static int mov_read_default(MOVContext *c, AVIOContext *pb, MOVAtom atom)
{
    int64_t total_size = 0;
    MOVAtom a;
    int i;
    if (atom.size < 0)
        atom.size = INT64_MAX;
    while (total_size + 8 < atom.size && !url_feof(pb)) {
        int (*parse)(MOVContext*, AVIOContext*, MOVAtom) = NULL;
        a.size = atom.size;
        a.type=0;
        if(atom.size >= 8) {
            a.size = get_be32(pb);
            a.type = get_le32(pb);
        }
        av_dlog(c->fc, "type: %08x '%.4s' parent:'%.4s' sz: %"PRId64" %"PRId64" %"PRId64"\n",
                a.type, (char*)&a.type, (char*)&atom.type, a.size, total_size, atom.size);
        total_size += 8;
        if (a.size == 1) {
            a.size = get_be64(pb) - 8;
            total_size += 8;
        }
        if (a.size == 0) {
            a.size = atom.size - total_size;
            if (a.size <= 8)
                break;
        }
        a.size -= 8;
        if(a.size < 0)
            break;
        a.size = FFMIN(a.size, atom.size - total_size);
        for (i = 0; mov_default_parse_table[i].type; i++)
            if (mov_default_parse_table[i].type == a.type) {
                parse = mov_default_parse_table[i].parse;
                break;
            }
        if (!parse && (atom.type == MKTAG('u','d','t','a') ||
                       atom.type == MKTAG('i','l','s','t')))
            parse = mov_read_udta_string;
        if (!parse) {
            url_fskip(pb, a.size);
        } else {
            int64_t start_pos = url_ftell(pb);
            int64_t left;
            int err = parse(c, pb, a);
            if (err < 0)
                return err;
            if (c->found_moov && c->found_mdat &&
                (url_is_streamed(pb) || start_pos + a.size == url_fsize(pb)))
                return 0;
            left = a.size - url_ftell(pb) + start_pos;
            if (left > 0)
                url_fskip(pb, left);
        }
        total_size += a.size;
    }
    if (total_size < atom.size && atom.size < 0x7ffff)
        url_fskip(pb, atom.size - total_size);
    return 0;
}
['static int mov_read_default(MOVContext *c, AVIOContext *pb, MOVAtom atom)\n{\n    int64_t total_size = 0;\n    MOVAtom a;\n    int i;\n    if (atom.size < 0)\n        atom.size = INT64_MAX;\n    while (total_size + 8 < atom.size && !url_feof(pb)) {\n        int (*parse)(MOVContext*, AVIOContext*, MOVAtom) = NULL;\n        a.size = atom.size;\n        a.type=0;\n        if(atom.size >= 8) {\n            a.size = get_be32(pb);\n            a.type = get_le32(pb);\n        }\n        av_dlog(c->fc, "type: %08x \'%.4s\' parent:\'%.4s\' sz: %"PRId64" %"PRId64" %"PRId64"\\n",\n                a.type, (char*)&a.type, (char*)&atom.type, a.size, total_size, atom.size);\n        total_size += 8;\n        if (a.size == 1) {\n            a.size = get_be64(pb) - 8;\n            total_size += 8;\n        }\n        if (a.size == 0) {\n            a.size = atom.size - total_size;\n            if (a.size <= 8)\n                break;\n        }\n        a.size -= 8;\n        if(a.size < 0)\n            break;\n        a.size = FFMIN(a.size, atom.size - total_size);\n        for (i = 0; mov_default_parse_table[i].type; i++)\n            if (mov_default_parse_table[i].type == a.type) {\n                parse = mov_default_parse_table[i].parse;\n                break;\n            }\n        if (!parse && (atom.type == MKTAG(\'u\',\'d\',\'t\',\'a\') ||\n                       atom.type == MKTAG(\'i\',\'l\',\'s\',\'t\')))\n            parse = mov_read_udta_string;\n        if (!parse) {\n            url_fskip(pb, a.size);\n        } else {\n            int64_t start_pos = url_ftell(pb);\n            int64_t left;\n            int err = parse(c, pb, a);\n            if (err < 0)\n                return err;\n            if (c->found_moov && c->found_mdat &&\n                (url_is_streamed(pb) || start_pos + a.size == url_fsize(pb)))\n                return 0;\n            left = a.size - url_ftell(pb) + start_pos;\n            if (left > 0)\n                url_fskip(pb, left);\n        }\n        total_size += a.size;\n    }\n    if (total_size < atom.size && atom.size < 0x7ffff)\n        url_fskip(pb, atom.size - total_size);\n    return 0;\n}']