diff options
author | Günther Deschner <gd@samba.org> | 2016-09-26 20:22:04 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2017-01-06 12:28:18 +0100 |
commit | 567465546f112fda90f59bbeeba0bff3d4985bcd (patch) | |
tree | 05aebd670d795f92b859498fecb430834565b551 | |
parent | 3e084ea6ceb82b61c24ce7260404027a4428b9d6 (diff) | |
download | samba-567465546f112fda90f59bbeeba0bff3d4985bcd.tar.gz |
s3-rpc_server: setup secondary address for tcp transport in bind_ack packet.
Guenther
Signed-off-by: Guenther Deschner <gd@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
-rw-r--r-- | source3/rpc_server/srv_pipe.c | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/source3/rpc_server/srv_pipe.c b/source3/rpc_server/srv_pipe.c index bf8988b2a76..407d8d70583 100644 --- a/source3/rpc_server/srv_pipe.c +++ b/source3/rpc_server/srv_pipe.c @@ -679,6 +679,7 @@ static bool api_pipe_bind_req(struct pipes_struct *p, DATA_BLOB auth_resp = data_blob_null; DATA_BLOB auth_blob = data_blob_null; const struct ndr_interface_table *table; + const char *secondary_address = NULL; if (!p->allow_bind) { DEBUG(2,("Pipe not in allow bind state\n")); @@ -826,14 +827,26 @@ static bool api_pipe_bind_req(struct pipes_struct *p, u.bind_ack.max_recv_frag = RPC_MAX_PDU_FRAG_LEN; u.bind_ack.assoc_group_id = assoc_gid; - /* name has to be \PIPE\xxxxx */ - u.bind_ack.secondary_address = - talloc_asprintf(pkt, "\\PIPE\\%s", - rpc_srv_get_pipe_srv_name(&id)); - if (!u.bind_ack.secondary_address) { + switch (p->transport) { + case NCACN_IP_TCP: + secondary_address = talloc_asprintf(pkt, "%d", + tsocket_address_inet_port(p->local_address)); + break; + case NCACN_NP: + default: + /* name has to be \PIPE\xxxxx */ + secondary_address = + talloc_asprintf(pkt, "\\PIPE\\%s", + rpc_srv_get_pipe_srv_name(&id)); + break; + } + + if (secondary_address == NULL) { DEBUG(0, ("Out of memory!\n")); goto err_exit; } + + u.bind_ack.secondary_address = secondary_address; u.bind_ack.secondary_address_size = strlen(u.bind_ack.secondary_address) + 1; |