Jacek Caban : mshtml: Properly handle OOM errors in navigate.c (coverity).
Alexandre Julliard
julliard at winehq.org
Fri Oct 19 13:33:53 CDT 2012
Module: wine
Branch: master
Commit: b6227fc4e89cfa20c23782f7e42c8dccdad36398
URL: http://source.winehq.org/git/wine.git/?a=commit;h=b6227fc4e89cfa20c23782f7e42c8dccdad36398
Author: Jacek Caban <jacek at codeweavers.com>
Date: Fri Oct 19 11:58:15 2012 +0200
mshtml: Properly handle OOM errors in navigate.c (coverity).
---
dlls/mshtml/navigate.c | 34 ++++++++++++++++++++--------------
1 files changed, 20 insertions(+), 14 deletions(-)
diff --git a/dlls/mshtml/navigate.c b/dlls/mshtml/navigate.c
index f1f0f98..06d1207 100644
--- a/dlls/mshtml/navigate.c
+++ b/dlls/mshtml/navigate.c
@@ -215,7 +215,11 @@ static const nsIInputStreamVtbl nsInputStreamVtbl = {
static nsProtocolStream *create_nsprotocol_stream(void)
{
- nsProtocolStream *ret = heap_alloc(sizeof(nsProtocolStream));
+ nsProtocolStream *ret;
+
+ ret = heap_alloc(sizeof(nsProtocolStream));
+ if(!ret)
+ return NULL;
ret->nsIInputStream_iface.lpVtbl = &nsInputStreamVtbl;
ret->ref = 1;
@@ -877,8 +881,10 @@ static HRESULT BufferBSC_read_data(BSCallback *bsc, IStream *stream)
HRESULT hres;
if(!This->buf) {
+ This->buf = heap_alloc(128);
+ if(!This->buf)
+ return E_OUTOFMEMORY;
This->size = 128;
- This->buf = heap_alloc(This->size);
}
do {
@@ -921,23 +927,20 @@ static const BSCallbackVtbl BufferBSCVtbl = {
};
-static BufferBSC *create_bufferbsc(IMoniker *mon)
-{
- BufferBSC *ret = heap_alloc_zero(sizeof(*ret));
-
- init_bscallback(&ret->bsc, &BufferBSCVtbl, mon, 0);
- ret->hres = E_FAIL;
-
- return ret;
-}
-
HRESULT bind_mon_to_wstr(HTMLInnerWindow *window, IMoniker *mon, WCHAR **ret)
{
- BufferBSC *bsc = create_bufferbsc(mon);
+ BufferBSC *bsc;
int cp = CP_ACP;
WCHAR *text;
HRESULT hres;
+ bsc = heap_alloc_zero(sizeof(*bsc));
+ if(!bsc)
+ return E_OUTOFMEMORY;
+
+ init_bscallback(&bsc->bsc, &BufferBSCVtbl, mon, 0);
+ bsc->hres = E_FAIL;
+
hres = start_binding(window, &bsc->bsc, NULL);
if(SUCCEEDED(hres))
hres = bsc->hres;
@@ -1164,8 +1167,11 @@ static HRESULT read_stream_data(nsChannelBSC *This, IStream *stream)
return S_OK;
}
- if(!This->nsstream)
+ if(!This->nsstream) {
This->nsstream = create_nsprotocol_stream();
+ if(!This->nsstream)
+ return E_OUTOFMEMORY;
+ }
do {
BOOL first_read = !This->bsc.readed;
More information about the wine-cvs
mailing list