···226226 if !sum = 0 then 0
227227 else
228228 let ratio = float_of_int !sum /. float_of_int len in
229229- let k = int_of_float (Float.round (log ratio /. log 2.0)) in
229229+ let k = int_of_float (Float.floor (log ratio /. log 2.0)) in
230230 (* Per the standard, the floor of log2 *)
231231 let k = max 0 k in
232232 min k bps
···387387 let br = Bitreader.create data in
388388 (* Read header: number of samples *)
389389 let n = Bitreader.read_bits br 32 in
390390- if n < 0 then Error "invalid sample count"
390390+ if n < 0 || n > 1_000_000 then Error "invalid sample count"
391391 else if n = 0 then Ok Bytes.empty
392392 else begin
393393 let j = cfg.block_size in