diff options
author | Stefan Metzmacher <metze@samba.org> | 2014-01-30 23:03:03 +0100 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2014-02-11 16:20:31 +0100 |
commit | d89ff8575dbc223019ee62fc65ec0ede593635f7 (patch) | |
tree | 186cb5534f42d2aea691defcd809068011ee035c | |
parent | b5eb5d97c28ea9a13b1d7f06599626f4c4ba14f4 (diff) | |
download | samba-d89ff8575dbc223019ee62fc65ec0ede593635f7.tar.gz samba-d89ff8575dbc223019ee62fc65ec0ede593635f7.tar.xz samba-d89ff8575dbc223019ee62fc65ec0ede593635f7.zip |
librpc/rpc: fix dcerpc_floor_set_rhs_data() with NULL data.
For EPM_PROTOCOL_IP we can only marshal ipv4 addresses,
everything else gets '0.0.0.0' (4 zero bytes on the wire).
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Guenther Deschner <gd@samba.org>
-rw-r--r-- | librpc/rpc/binding.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/librpc/rpc/binding.c b/librpc/rpc/binding.c index 8f85854008..ee9f13d1b7 100644 --- a/librpc/rpc/binding.c +++ b/librpc/rpc/binding.c @@ -541,6 +541,10 @@ static NTSTATUS dcerpc_floor_set_rhs_data(TALLOC_CTX *mem_ctx, struct epm_floor *epm_floor, const char *data) { + if (data == NULL) { + data = ""; + } + switch (epm_floor->lhs.protocol) { case EPM_PROTOCOL_TCP: epm_floor->rhs.tcp.port = atoi(data); @@ -555,6 +559,9 @@ static NTSTATUS dcerpc_floor_set_rhs_data(TALLOC_CTX *mem_ctx, return NT_STATUS_OK; case EPM_PROTOCOL_IP: + if (!is_ipaddress_v4(data)) { + data = "0.0.0.0"; + } epm_floor->rhs.ip.ipaddr = talloc_strdup(mem_ctx, data); NT_STATUS_HAVE_NO_MEMORY(epm_floor->rhs.ip.ipaddr); return NT_STATUS_OK; |