From 29ab52044505000bbd2ca381a278fdc096eb28b2 Mon Sep 17 00:00:00 2001 From: Hans Leidekker Date: Tue, 4 Dec 2018 13:57:27 +0100 Subject: [PATCH] webservices: Properly check the input buffer type in WsMoveReader. Signed-off-by: Hans Leidekker Signed-off-by: Alexandre Julliard --- dlls/webservices/reader.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/dlls/webservices/reader.c b/dlls/webservices/reader.c index ba6a951e9c8..9a9d4917303 100644 --- a/dlls/webservices/reader.c +++ b/dlls/webservices/reader.c @@ -653,6 +653,7 @@ HRESULT WINAPI WsFillReader( WS_XML_READER *handle, ULONG min_size, const WS_ASY TRACE( "%p %u %p %p\n", handle, min_size, ctx, error ); if (error) FIXME( "ignoring error parameter\n" ); + if (ctx) FIXME( "ignoring ctx parameter\n" ); if (!reader) return E_INVALIDARG; @@ -3582,7 +3583,7 @@ HRESULT WINAPI WsMoveReader( WS_XML_READER *handle, WS_MOVE_TO move, BOOL *found return E_INVALIDARG; } - if (!reader->input_type) hr = WS_E_INVALID_OPERATION; + if (reader->input_type != WS_XML_READER_INPUT_TYPE_BUFFER) hr = WS_E_INVALID_OPERATION; else hr = read_move_to( reader, move, found ); LeaveCriticalSection( &reader->cs ); @@ -6982,8 +6983,8 @@ HRESULT WINAPI WsSetInput( WS_XML_READER *handle, const WS_XML_READER_ENCODING * { if (input->inputType == WS_XML_READER_INPUT_TYPE_BUFFER) { - WS_XML_READER_TEXT_ENCODING *text = (WS_XML_READER_TEXT_ENCODING *)encoding; - WS_XML_READER_BUFFER_INPUT *buf = (WS_XML_READER_BUFFER_INPUT *)input; + const WS_XML_READER_TEXT_ENCODING *text = (const WS_XML_READER_TEXT_ENCODING *)encoding; + const WS_XML_READER_BUFFER_INPUT *buf = (const WS_XML_READER_BUFFER_INPUT *)input; if (text->charSet != WS_CHARSET_AUTO) reader->input_charset = text->charSet; else reader->input_charset = detect_charset( buf->encodedData, buf->encodedDataSize, &offset ); } @@ -6993,7 +6994,7 @@ HRESULT WINAPI WsSetInput( WS_XML_READER *handle, const WS_XML_READER_ENCODING * } case WS_XML_READER_ENCODING_TYPE_BINARY: { - WS_XML_READER_BINARY_ENCODING *bin = (WS_XML_READER_BINARY_ENCODING *)encoding; + const WS_XML_READER_BINARY_ENCODING *bin = (const WS_XML_READER_BINARY_ENCODING *)encoding; reader->input_enc = WS_XML_READER_ENCODING_TYPE_BINARY; reader->input_charset = 0; reader->dict_static = bin->staticDictionary ? bin->staticDictionary : &dict_builtin_static.dict; @@ -7010,13 +7011,13 @@ HRESULT WINAPI WsSetInput( WS_XML_READER *handle, const WS_XML_READER_ENCODING * { case WS_XML_READER_INPUT_TYPE_BUFFER: { - WS_XML_READER_BUFFER_INPUT *buf = (WS_XML_READER_BUFFER_INPUT *)input; + const WS_XML_READER_BUFFER_INPUT *buf = (const WS_XML_READER_BUFFER_INPUT *)input; set_input_buffer( reader, (const unsigned char *)buf->encodedData + offset, buf->encodedDataSize - offset ); break; } case WS_XML_READER_INPUT_TYPE_STREAM: { - WS_XML_READER_STREAM_INPUT *stream = (WS_XML_READER_STREAM_INPUT *)input; + const WS_XML_READER_STREAM_INPUT *stream = (const WS_XML_READER_STREAM_INPUT *)input; if (!reader->stream_buf && !(reader->stream_buf = heap_alloc( STREAM_BUFSIZE ))) { hr = E_OUTOFMEMORY;