Open toherrmann opened 7 years ago
interesting, is this an OST you can provide?
No, I can't provide the file. It's the email account of a friend. And the file has a size of 230 MB. sry
I found a spec from MS. They write about "RTF compression" there. Could it be, that such a compression algorithm is used for the problematic node? MS-PST-File-Specification.pdf
nah, MS started compressing some of the file blocks with zlib in the 2013 file format, the error is indicating the library is attempting to decompress non-compressed data. This may be because the data was incorrectly assumed to be compressed, or that the wrong data was accessed. The block that you included looks like it may be a series of pointers to a composite block that may be compressed and have the actual data in it. Unfortunately the zlib compression piece is not documented so the only real way to work out (AFIK so far) is to find example PST files that demonstrate the behaviour and reverse engineer.
As an aside, the folder child records seem to be pretty fragile, and it might be worth trying SCANPST against the file to see if that makes a difference (obviously make a copy first), just in case it's a corruption issue.
I already tried to repair the file by SCANPST. The file size increased from 250322944 to 267001856. After that in second run SCANPST meant, that there are unimportant inconsistenies in the file, which don't need to be repaired.
I asked my friend to give you access to the .ost file. He agreed but only to share with you (no other people). How can we do this?
You could upload it to something like dropbox and email me a link: libpst AT rjohnson.id.au
You should have received the share link. This is the original (corrupted) version of that OST file.
Running
example.Test
with an Outlook 2016.ost produces following error:After reactivation of try/ catch in PSTNodeInputStream.java:136 it says:
Also changing inflater code for this special case to
final InflaterOutputStream inflaterStream = new InflaterOutputStream(outputStream, new Inflater(nowrap));
and giving it a "dummy" byte (described in Inflater JavaDoc) was'nt successful.