diff options
author | Stefan Metzmacher <metze@samba.org> | 2014-02-11 19:33:09 +0100 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2014-02-13 11:54:15 +0100 |
commit | 43800553bbe90933fea103f15a912619cd728c5b (patch) | |
tree | e5f41569fafe5a133344e740fef37c7234c917d4 /librpc | |
parent | 5ba54305383783a0121425c602856a3432abdc2f (diff) | |
download | samba-43800553bbe90933fea103f15a912619cd728c5b.tar.gz samba-43800553bbe90933fea103f15a912619cd728c5b.tar.xz samba-43800553bbe90933fea103f15a912619cd728c5b.zip |
librpc/rpc: allow "assoc_group_id" in dcerpc_binding_[g|s]et_string()
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Guenther Deschner <gd@samba.org>
Diffstat (limited to 'librpc')
-rw-r--r-- | librpc/rpc/binding.c | 29 | ||||
-rw-r--r-- | librpc/rpc/rpc_common.h | 1 |
2 files changed, 30 insertions, 0 deletions
diff --git a/librpc/rpc/binding.c b/librpc/rpc/binding.c index 132739cae78..65cdb36a0e6 100644 --- a/librpc/rpc/binding.c +++ b/librpc/rpc/binding.c @@ -567,6 +567,19 @@ _PUBLIC_ const char *dcerpc_binding_get_string_option(const struct dcerpc_bindin return derpc_transport_string_by_transport(b->transport); } + ret = strcmp(name, "assoc_group_id"); + if (ret == 0) { + char *tmp = discard_const_p(char, b->assoc_group_string); + + if (b->assoc_group_id == 0) { + return NULL; + } + + snprintf(tmp, sizeof(b->assoc_group_string), + "0x%08x", b->assoc_group_id); + return (const char *)b->assoc_group_string; + } + for (i=0; i < ARRAY_SIZE(specials); i++) { ret = strcmp(specials[i].name, name); if (ret != 0) { @@ -690,6 +703,22 @@ _PUBLIC_ NTSTATUS dcerpc_binding_set_string_option(struct dcerpc_binding *b, return dcerpc_binding_set_object(b, uuid); } + ret = strcmp(name, "assoc_group_id"); + if (ret == 0) { + uint32_t assoc_group_id = 0; + + if (value != NULL) { + char c; + + ret = sscanf(value, "0x%08x%c", &assoc_group_id, &c); + if (ret != 1) { + return NT_STATUS_INVALID_PARAMETER_MIX; + } + } + + return dcerpc_binding_set_assoc_group_id(b, assoc_group_id); + } + for (i=0; i < ARRAY_SIZE(specials); i++) { ret = strcmp(specials[i].name, name); if (ret != 0) { diff --git a/librpc/rpc/rpc_common.h b/librpc/rpc/rpc_common.h index 4dfc46a98db..428acfeea3f 100644 --- a/librpc/rpc/rpc_common.h +++ b/librpc/rpc/rpc_common.h @@ -51,6 +51,7 @@ struct dcerpc_binding { const char **options; uint32_t flags; uint32_t assoc_group_id; + char assoc_group_string[11]; /* 0x3456789a + '\0' */ }; /* dcerpc pipe flags */ |