Robert Shearman : ole32: Add a check for a condition where a stream has an invalid size

Alexandre Julliard julliard at wine.codeweavers.com
Mon Sep 11 06:05:14 CDT 2006


Module: wine
Branch: master
Commit: aa336618ecb0a2d76a6e49877c515691c694e4e9
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=aa336618ecb0a2d76a6e49877c515691c694e4e9

Author: Robert Shearman <rob at codeweavers.com>
Date:   Mon Sep 11 11:15:01 2006 +0100

ole32: Add a check for a condition where a stream has an invalid size
and so there aren't enough blocks in the chain to write data into.

---

 dlls/ole32/storage32.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/dlls/ole32/storage32.c b/dlls/ole32/storage32.c
index 19f09fc..187ba0b 100644
--- a/dlls/ole32/storage32.c
+++ b/dlls/ole32/storage32.c
@@ -4656,6 +4656,14 @@ HRESULT BlockChainStream_WriteAt(BlockCh
 
   This->lastBlockNoInSequenceIndex = blockIndex;
 
+  /* BlockChainStream_SetSize should have already been called to ensure we have
+   * enough blocks in the chain to write into */
+  if (blockIndex == BLOCK_END_OF_CHAIN)
+  {
+    ERR("not enough blocks in chain to write data\n");
+    return STG_E_DOCFILECORRUPT;
+  }
+
   /*
    * Here, I'm casting away the constness on the buffer variable
    * This is OK since we don't intend to modify that buffer.




More information about the wine-cvs mailing list