diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2004-10-25 10:21:41 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:04:41 -0500 |
commit | 17781196bf4f4ab8943bdc6c20225e1028aab1a6 (patch) | |
tree | a79031626300c2b21e8593a17e0b7f5c93d19da1 /source4/librpc/rpc/dcerpc_util.c | |
parent | dd476f06acb038e0572d9b8c49e676b7b7834fcb (diff) | |
download | samba-17781196bf4f4ab8943bdc6c20225e1028aab1a6.tar.gz samba-17781196bf4f4ab8943bdc6c20225e1028aab1a6.tar.bz2 samba-17781196bf4f4ab8943bdc6c20225e1028aab1a6.zip |
r3209: - Create directory for ncalrpc with correct mode
- Support binding strings like :
ncacn_np:[sign]
ncacn_np:myhost[seal,sign,endpoint]
again
(This used to be commit b53f4cd1697345065c7d979ba63237bf828dc07f)
Diffstat (limited to 'source4/librpc/rpc/dcerpc_util.c')
-rw-r--r-- | source4/librpc/rpc/dcerpc_util.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/source4/librpc/rpc/dcerpc_util.c b/source4/librpc/rpc/dcerpc_util.c index 9ec1af77ad..d0ecf3a7a8 100644 --- a/source4/librpc/rpc/dcerpc_util.c +++ b/source4/librpc/rpc/dcerpc_util.c @@ -220,6 +220,7 @@ const char *dcerpc_binding_string(TALLOC_CTX *mem_ctx, const struct dcerpc_bindi s = talloc_asprintf_append(s, ",%s", b->options[i]); if (!s) return NULL; } + for (i=0;i<ARRAY_SIZE(ncacn_options);i++) { if (b->flags & ncacn_options[i].flag) { s = talloc_asprintf_append(s, ",%s", ncacn_options[i].name); @@ -325,14 +326,6 @@ NTSTATUS dcerpc_parse_binding(TALLOC_CTX *mem_ctx, const char *s, struct dcerpc_ b->options[i] = options; b->options[i+1] = NULL; - /* Endpoint is first option */ - b->endpoint = b->options[0]; - if (strlen(b->endpoint) == 0) b->endpoint = NULL; - - for (i=0;b->options[i];i++) { - b->options[i] = b->options[i+1]; - } - /* some options are pre-parsed for convenience */ for (i=0;b->options[i];i++) { for (j=0;j<ARRAY_SIZE(ncacn_options);j++) { @@ -348,6 +341,16 @@ NTSTATUS dcerpc_parse_binding(TALLOC_CTX *mem_ctx, const char *s, struct dcerpc_ } } + if (b->options[0]) { + /* Endpoint is first option */ + b->endpoint = b->options[0]; + if (strlen(b->endpoint) == 0) b->endpoint = NULL; + + for (i=0;b->options[i];i++) { + b->options[i] = b->options[i+1]; + } + } + if (b->options[0] == NULL) b->options = NULL; |