Unified · Split
| @@ -220,6 +220,8 @@ matroskarun(Biobuf *f) · 219 unmodified lines | ||
| 220 | 220 | werrstr("invalid ebml: %r at %#llx (size %lld)", off, sz); |
| 221 | 221 | goto err; |
| 222 | 222 | } |
| 223 | + if(el.type < 0) | |
| 224 | + continue; | |
| 223 | 225 | if(n == 0) /* eof */ |
| 224 | 226 | break; |
| 225 | 227 | left -= n; |
| @@ -231,7 +233,8 @@ matroskarun(Biobuf *f) · 5 unmodified lines | ||
| 231 | 233 | } |
| 232 | 234 | isebml++; |
| 233 | 235 | }else if(el.id == ESegment){ |
| 234 | − left = sz; | |
| 236 | + if(sz > 0) | |
| 237 | + left = sz; | |
| 235 | 238 | if(isebml != 1){ |
| 236 | 239 | werrstr("invalid ebml"); |
| 237 | 240 | goto err; |
| @@ -439,9 +442,11 @@ matroskarun(Biobuf *f) · 201 unmodified lines | ||
| 439 | 442 | getstring(ELanguage, e.lang) |
| 440 | 443 | } |
| 441 | 444 | |
| 442 | − if(Bseek(f, sz, 1) < 0) | |
| 443 | − return -1; | |
| 444 | − left -= sz; | |
| 445 | + if(sz > 0){ | |
| 446 | + if(Bseek(f, sz, 1) < 0) | |
| 447 | + return -1; | |
| 448 | + left -= sz; | |
| 449 | + } | |
| 445 | 450 | } |
| 446 | 451 | |
| 447 | 452 | if(isebml == 2 && left == 0){ |