libtags: m4a: do not div by zero

This commit is contained in:
Sigrid Solveig Haflínudóttir 2022-03-30 20:55:33 +00:00
parent cb4d441cb8
commit 5ddff68167

View file

@ -8,6 +8,7 @@ int
tagm4a(Tagctx *ctx)
{
uvlong duration;
uint x;
uchar *d;
int sz, type, dtype, i, skip, n;
@ -101,12 +102,14 @@ tagm4a(Tagctx *ctx)
if(ctx->read(ctx, d, 16) != 16)
return -1;
sz -= 16;
duration = beuint(&d[12]) / beuint(&d[8]);
if((x = beuint(&d[8])) > 0)
duration = beuint(&d[12]) / x;
}else if(d[1] == 1){ /* version 1 */
if(ctx->read(ctx, d, 28) != 28)
return -1;
sz -= 28;
duration = ((uvlong)beuint(&d[20])<<32 | beuint(&d[24])) / (uvlong)beuint(&d[16]);
if((x = beuint(&d[16])) > 0)
duration = ((uvlong)beuint(&d[20])<<32 | beuint(&d[24])) / (uvlong)x;
}
ctx->duration = duration * 1000;
continue;