diff options
-rw-r--r-- | librpc/rpc/binding.c | 33 |
1 files changed, 15 insertions, 18 deletions
diff --git a/librpc/rpc/binding.c b/librpc/rpc/binding.c index ee9f13d1b7..cd896b0d71 100644 --- a/librpc/rpc/binding.c +++ b/librpc/rpc/binding.c @@ -875,35 +875,32 @@ _PUBLIC_ NTSTATUS dcerpc_binding_build_tower(TALLOC_CTX *mem_ctx, /* Floor 2 to num_protocols */ for (i = 0; i < num_protocols; i++) { tower->floors[2 + i].lhs.protocol = protseq[i]; - tower->floors[2 + i].lhs.lhs_data = data_blob_talloc(tower->floors, NULL, 0); + tower->floors[2 + i].lhs.lhs_data = data_blob_null; ZERO_STRUCT(tower->floors[2 + i].rhs); - dcerpc_floor_set_rhs_data(tower->floors, &tower->floors[2 + i], ""); + status = dcerpc_floor_set_rhs_data(tower->floors, + &tower->floors[2 + i], + NULL); + if (!NT_STATUS_IS_OK(status)) { + return status; + } } /* The 4th floor contains the endpoint */ if (num_protocols >= 2 && binding->endpoint) { - status = dcerpc_floor_set_rhs_data(tower->floors, &tower->floors[3], binding->endpoint); - if (NT_STATUS_IS_ERR(status)) { + status = dcerpc_floor_set_rhs_data(tower->floors, + &tower->floors[3], + binding->endpoint); + if (!NT_STATUS_IS_OK(status)) { return status; } } /* The 5th contains the network address */ if (num_protocols >= 3 && binding->host) { - if (is_ipaddress(binding->host) || - (binding->host[0] == '\\' && binding->host[1] == '\\')) { - status = dcerpc_floor_set_rhs_data(tower->floors, &tower->floors[4], - binding->host); - } else { - /* note that we don't attempt to resolve the - name here - when we get a hostname here we - are in the client code, and want to put in - a wildcard all-zeros IP for the server to - fill in */ - status = dcerpc_floor_set_rhs_data(tower->floors, &tower->floors[4], - "0.0.0.0"); - } - if (NT_STATUS_IS_ERR(status)) { + status = dcerpc_floor_set_rhs_data(tower->floors, + &tower->floors[4], + binding->host); + if (!NT_STATUS_IS_OK(status)) { return status; } } |