I am submitting this issue mostly for posterity in case someone else encounters the same problem in the near future. Perhaps I will be able to fix it at some point.
I have tried decompressing a binary stream (tar) whose compressed size is 11MB and uncompressed size 42MB. I am getting 'corrupt data'. Some superficial debugging shows that this occurs at precisely the point in the execution where the output buffer size (this$static.d.output.buf) is 16777216 (= 1 << 24). It also happens that the value of rep0 computed at this line:
|
this$static.rep0 = (2 | posSlot & 1) << numDirectBits; |
is -2147483648 (= 1 << 31).
So it looks like a case of integer overflow.
I am submitting this issue mostly for posterity in case someone else encounters the same problem in the near future. Perhaps I will be able to fix it at some point.
I have tried decompressing a binary stream (tar) whose compressed size is 11MB and uncompressed size 42MB. I am getting 'corrupt data'. Some superficial debugging shows that this occurs at precisely the point in the execution where the output buffer size (
this$static.d.output.buf) is 16777216 (= 1 << 24). It also happens that the value ofrep0computed at this line:lzma2-js/lzma2_worker.js
Line 1210 in dbe9e72
is -2147483648 (= 1 << 31).
So it looks like a case of integer overflow.