diff options
author | Nick Burch <nick@apache.org> | 2010-12-29 03:00:46 +0000 |
---|---|---|
committer | Nick Burch <nick@apache.org> | 2010-12-29 03:00:46 +0000 |
commit | bf27275eb2421a2ac8dc79799f9d0f2232b29197 (patch) | |
tree | bf24d88ad757ed6446120c06ffe96c55cd1928c9 /src/java/org/apache/poi/poifs/filesystem | |
parent | ada898d0cf1ac89a05e4b65897c5e47c0f15774c (diff) | |
download | poi-bf27275eb2421a2ac8dc79799f9d0f2232b29197.tar.gz poi-bf27275eb2421a2ac8dc79799f9d0f2232b29197.zip |
More NPOIFS BAT vs XBAT confusion fixes. Also fixes recent POIFS regression on big files, and adds a POIFS unit test for XBAT containing files (previously there wasn't one)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1053511 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/java/org/apache/poi/poifs/filesystem')
-rw-r--r-- | src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java b/src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java index 6cc5730164..b506e4b9aa 100644 --- a/src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java +++ b/src/java/org/apache/poi/poifs/filesystem/NPOIFSFileSystem.java @@ -45,6 +45,7 @@ import org.apache.poi.poifs.nio.FileBackedDataSource; import org.apache.poi.poifs.property.DirectoryProperty; import org.apache.poi.poifs.property.NPropertyTable; import org.apache.poi.poifs.storage.BATBlock; +import org.apache.poi.poifs.storage.BlockAllocationTableReader; import org.apache.poi.poifs.storage.BlockAllocationTableWriter; import org.apache.poi.poifs.storage.HeaderBlock; import org.apache.poi.poifs.storage.HeaderBlockConstants; @@ -179,6 +180,9 @@ public class NPOIFSFileSystem extends BlockStore // Have the header processed _header = new HeaderBlock(headerBuffer); + + // Sanity check the block count + BlockAllocationTableReader.sanityCheckBlockCount(_header.getBATCount()); // We need to buffer the whole file into memory when // working with an InputStream. @@ -455,8 +459,8 @@ public class NPOIFSFileSystem extends BlockStore System.arraycopy(_header.getBATArray(), 0, newBATs, 0, newBATs.length-1); newBATs[newBATs.length-1] = offset; _header.setBATArray(newBATs); - _header.setBATCount(newBATs.length); } + _header.setBATCount(_bat_blocks.size()); // The current offset stores us, but the next one is free return offset+1; |