Sync to Wine-0_9_5:
Robert Shearman <rob@codeweavers.com>
- ole: Fix mis-handling of return value in StgStreamImpl_Read.
  BlockChainStream_ReadAt returns a BOOL, not an HRESULT so change
  StgStreamImpl_Read to handle this, by returning STG_E_READFAULT on
  failure.
- ole: Check the return value of IStream_SetSize in IStream_Read.
  Check the return value of IStream_SetSize in IStream_Read, since
  otherwise execution could continue on and cause heap corruption.
Modified: trunk/reactos/lib/ole32/hglobalstream.c
Modified: trunk/reactos/lib/ole32/stg_stream.c

Modified: trunk/reactos/lib/ole32/hglobalstream.c
--- trunk/reactos/lib/ole32/hglobalstream.c	2006-01-06 20:14:15 UTC (rev 20620)
+++ trunk/reactos/lib/ole32/hglobalstream.c	2006-01-06 20:19:21 UTC (rev 20621)
@@ -313,7 +313,12 @@
   if (newSize.u.LowPart > This->streamSize.u.LowPart)
   {
     /* grow stream */
-   IStream_SetSize(iface, newSize);
+    HRESULT hr = IStream_SetSize(iface, newSize);
+    if (FAILED(hr))
+    {
+      ERR("IStream_SetSize failed with error 0x%08lx\n", hr);
+      return hr;
+    }
   }
 
   /*

Modified: trunk/reactos/lib/ole32/stg_stream.c
--- trunk/reactos/lib/ole32/stg_stream.c	2006-01-06 20:14:15 UTC (rev 20620)
+++ trunk/reactos/lib/ole32/stg_stream.c	2006-01-06 20:19:21 UTC (rev 20621)
@@ -249,7 +249,7 @@
 
   ULONG bytesReadBuffer;
   ULONG bytesToReadFromBuffer;
-  HRESULT res = S_FALSE;
+  HRESULT res;
 
   TRACE("(%p, %p, %ld, %p)\n",
 	iface, pv, cb, pcbRead);
@@ -282,11 +282,15 @@
   }
   else if (This->bigBlockChain!=0)
   {
-    res = BlockChainStream_ReadAt(This->bigBlockChain,
-			    This->currentPosition,
-			    bytesToReadFromBuffer,
-			    pv,
-			    pcbRead);
+    BOOL success = BlockChainStream_ReadAt(This->bigBlockChain,
+                                           This->currentPosition,
+                                           bytesToReadFromBuffer,
+                                           pv,
+                                           pcbRead);
+    if (success)
+      res = S_OK;
+    else
+      res = STG_E_READFAULT;
   }
   else
   {