~ft/libtags

880732bbedf2b2ca759abf0c0d8908526f284405 — Sigrid Solveig Haflínudóttir 2 years ago f6b8f1a
m4a: do not div by zero
1 files changed, 5 insertions(+), 2 deletions(-)

M m4a.c
M m4a.c => m4a.c +5 -2
@@ 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;