Hi, On Mon, Nov 21, 2016 at 10:26 PM +0300, Maxim Dounin wrote:
>Ah, ok, I see the problem now. Please clarify things in the >commit log as well. > >It also make sense to use sizeof() explicitly, instead of >introducing a magic number, e.g.: Thanks!There is the new patch. # HG changeset patch # User hucongcong <hucon...@foxmail.com> # Date 1479740605 -28800 # Mon Nov 21 23:03:25 2016 +0800 # Node ID 7a1a6f7b989d4c44523333293265d58663ac7ff4 # Parent 2c7a2d75938a31044552b0a6cd6edaebdaf0bd69 Mp4: fixed setting wrong mdat atom size in very rare cases. Atom size is the sum of atom header size and atom data size. The specification says that the first 4 bytes are set to one when the atom size is greater than the maximum unsigned 32-bit value. Which means atom header size should be considered when the comparison takes place between atom data size and 0xffffffff. diff -r 2c7a2d75938a -r 7a1a6f7b989d src/http/modules/ngx_http_mp4_module.c --- a/src/http/modules/ngx_http_mp4_module.c Mon Nov 21 16:49:19 2016 +0300 +++ b/src/http/modules/ngx_http_mp4_module.c Mon Nov 21 23:03:25 2016 +0800 @@ -1229,7 +1229,9 @@ ngx_http_mp4_update_mdat_atom(ngx_http_m atom_header = mp4->mdat_atom_header; - if ((uint64_t) atom_data_size > (uint64_t) 0xffffffff) { + if ((uint64_t) atom_data_size + sizeof(ngx_mp4_atom_header_t) + > (uint64_t) 0xffffffff) + { atom_size = 1; atom_header_size = sizeof(ngx_mp4_atom_header64_t); ngx_mp4_set_64value(atom_header + sizeof(ngx_mp4_atom_header_t), _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel