summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2014-01-30 23:03:03 +0100
committerGünther Deschner <gd@samba.org>2014-02-11 16:20:31 +0100
commitd89ff8575dbc223019ee62fc65ec0ede593635f7 (patch)
tree186cb5534f42d2aea691defcd809068011ee035c
parentb5eb5d97c28ea9a13b1d7f06599626f4c4ba14f4 (diff)
downloadsamba-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.c7
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;