HiraokaHyperTools / msgreader

35 stars 9 forks source link

RangeError: offset is out of bounds #35

Closed markb-trustifi closed 1 year ago

markb-trustifi commented 1 year ago

It happens for some MSG files:

RangeError: offset is out of bounds
    at Uint8Array.set (<anonymous>)
    at Reader.readChainDataByBlockSmall (node_modules/@kenjiuno/msgreader/lib/Reader.js:257:28)
    at Reader.readProperty (node_modules/@kenjiuno/msgreader/lib/Reader.js:273:29)
    at Object.provider (node_modules/@kenjiuno/msgreader/lib/Reader.js:326:62)
    at MsgReader.fieldsNameIdDir (node_modules/@kenjiuno/msgreader/lib/MsgReader.js:393:42)
    at MsgReader.fieldsDataDirInner (node_modules/@kenjiuno/msgreader/lib/MsgReader.js:230:18)
    at MsgReader.fieldsDataDir (node_modules/@kenjiuno/msgreader/lib/MsgReader.js:359:18)
    at MsgReader.fieldsDataReader (node_modules/@kenjiuno/msgreader/lib/MsgReader.js:436:14)
    at MsgReader.parseMsgData (node_modules/@kenjiuno/msgreader/lib/MsgReader.js:444:21)
    at MsgReader.getFileData (node_modules/@kenjiuno/msgreader/lib/MsgReader.js:457:36)

It can be fixed by adding condition to the readProperty function:

Reader.prototype.readProperty = function (fieldProperty) {
        if (!fieldProperty.sizeBlock) {
            return new Uint8Array(0);
        }
kenjiuno commented 1 year ago

Interesting.

I have published @kenjiuno/msgreader@1.18.0-alpha.1 with suggested tweak.

https://github.com/HiraokaHyperTools/msgreader/commit/18cd9bbe9a12a6c284e2b81b55bbbc444b720538#diff-67b38a30088431119cfae6e71c4ac251d01a94d255641bae0c0986000b271780R391-R393

markb-trustifi commented 1 year ago

Great! Thank you so much.