Commit 1a3d7c77 authored by Rob Shearman's avatar Rob Shearman Committed by Alexandre Julliard

rpcrt4: Allow NULL networkaddr and endpoint in rpcrt4_np_get_top_of_tower.

Add tests for this.
parent 7b40fd64
......@@ -422,8 +422,8 @@ static size_t rpcrt4_ncacn_np_get_top_of_tower(unsigned char *tower_data,
TRACE("(%p, %s, %s)\n", tower_data, networkaddr, endpoint);
networkaddr_size = strlen(networkaddr) + 1;
endpoint_size = strlen(endpoint) + 1;
networkaddr_size = networkaddr ? strlen(networkaddr) + 1 : 1;
endpoint_size = endpoint ? strlen(endpoint) + 1 : 1;
size = sizeof(*smb_floor) + endpoint_size + sizeof(*nb_floor) + networkaddr_size;
if (!tower_data)
......@@ -437,7 +437,10 @@ static size_t rpcrt4_ncacn_np_get_top_of_tower(unsigned char *tower_data,
smb_floor->protid = EPM_PROTOCOL_SMB;
smb_floor->count_rhs = endpoint_size;
memcpy(tower_data, endpoint, endpoint_size);
if (endpoint)
memcpy(tower_data, endpoint, endpoint_size);
else
tower_data[0] = 0;
tower_data += endpoint_size;
nb_floor = (twr_empty_floor_t *)tower_data;
......@@ -448,7 +451,10 @@ static size_t rpcrt4_ncacn_np_get_top_of_tower(unsigned char *tower_data,
nb_floor->protid = EPM_PROTOCOL_NETBIOS;
nb_floor->count_rhs = networkaddr_size;
memcpy(tower_data, networkaddr, networkaddr_size);
if (networkaddr)
memcpy(tower_data, networkaddr, networkaddr_size);
else
tower_data[0] = 0;
tower_data += networkaddr_size;
return size;
......
......@@ -374,6 +374,16 @@ static void test_towers(void)
I_RpcFree(address);
I_RpcFree(tower);
/* test the behaviour for np with no address */
ret = TowerConstruct(&mapi_if_id, &ndr_syntax, "ncacn_np", "\\pipe\\test", NULL, &tower);
ok(ret == RPC_S_OK, "TowerConstruct failed with error %ld\n", ret);
ret = TowerExplode(tower, NULL, NULL, NULL, NULL, &address);
ok(ret == RPC_S_OK, "TowerExplode failed with error %ld\n", ret);
ok(!strcmp(address, ""), "address was \"%s\" instead of \"\"\n", address);
I_RpcFree(address);
I_RpcFree(tower);
}
static void test_I_RpcMapWin32Status(void)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment