Sebastian Lackner : webservices: Fix handling of duplicate headers in WsRemoveCustomHeader.
Module: wine Branch: master Commit: 0238d470316a7ee60abe695fef089580464b4891 URL: http://source.winehq.org/git/wine.git/?a=commit;h=0238d470316a7ee60abe695fef... Author: Sebastian Lackner <sebastian(a)fds-team.de> Date: Wed Aug 31 21:09:04 2016 +0200 webservices: Fix handling of duplicate headers in WsRemoveCustomHeader. Signed-off-by: Sebastian Lackner <sebastian(a)fds-team.de> Signed-off-by: Hans Leidekker <hans(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/webservices/msg.c | 2 +- dlls/webservices/tests/msg.c | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/dlls/webservices/msg.c b/dlls/webservices/msg.c index 01b6625..6fcd046 100644 --- a/dlls/webservices/msg.c +++ b/dlls/webservices/msg.c @@ -1062,7 +1062,7 @@ HRESULT WINAPI WsRemoveCustomHeader( WS_MESSAGE *handle, const WS_XML_STRING *na { remove_header( msg, i ); removed = TRUE; - break; + i--; } } diff --git a/dlls/webservices/tests/msg.c b/dlls/webservices/tests/msg.c index b78c52e..5d0901e 100644 --- a/dlls/webservices/tests/msg.c +++ b/dlls/webservices/tests/msg.c @@ -839,8 +839,15 @@ static void test_WsRemoveCustomHeader(void) "xmlns:s=\"http://www.w3.org/2003/05/soap-envelope\"><s:Header>" "<a:MessageID>urn:uuid:00000000-0000-0000-0000-000000000000</a:MessageID>" "</s:Header><s:Body/></s:Envelope>"; + static const char expected3[] = + "<s:Envelope xmlns:a=\"http://www.w3.org/2005/08/addressing\" " + "xmlns:s=\"http://www.w3.org/2003/05/soap-envelope\"><s:Header>" + "<a:MessageID>urn:uuid:00000000-0000-0000-0000-000000000000</a:MessageID>" + "<test xmlns=\"ns\">value</test><test xmlns=\"ns\">value2</test>" + "</s:Header><s:Body/></s:Envelope>"; static WS_XML_STRING localname = {4, (BYTE *)"test"}, ns = {2, (BYTE *)"ns"}; static const WS_XML_STRING value = {5, (BYTE *)"value"}; + static const WS_XML_STRING value2 = {6, (BYTE *)"value2"}; HRESULT hr; WS_MESSAGE *msg; WS_ELEMENT_DESCRIPTION desc; @@ -866,6 +873,10 @@ static void test_WsRemoveCustomHeader(void) ok( hr == S_OK, "got %08x\n", hr ); check_output_header( msg, expected, -1, strstr(expected, "urn:uuid:") - expected, 46, __LINE__ ); + hr = WsAddCustomHeader( msg, &desc, WS_WRITE_REQUIRED_VALUE, &value2, sizeof(value2), 0, NULL ); + ok( hr == S_OK, "got %08x\n", hr ); + check_output_header( msg, expected3, -1, strstr(expected3, "urn:uuid:") - expected3, 46, __LINE__ ); + hr = WsRemoveCustomHeader( msg, NULL, NULL, NULL ); ok( hr == E_INVALIDARG, "got %08x\n", hr );
participants (1)
-
Alexandre Julliard