From 17781196bf4f4ab8943bdc6c20225e1028aab1a6 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 25 Oct 2004 10:21:41 +0000 Subject: 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) --- source4/librpc/rpc/dcerpc_sock.c | 2 ++ source4/librpc/rpc/dcerpc_util.c | 19 +++++++++++-------- source4/rpc_server/dcerpc_sock.c | 6 ++++-- 3 files changed, 17 insertions(+), 10 deletions(-) (limited to 'source4') diff --git a/source4/librpc/rpc/dcerpc_sock.c b/source4/librpc/rpc/dcerpc_sock.c index 9ad5c06ad2..b22ada1d7f 100644 --- a/source4/librpc/rpc/dcerpc_sock.c +++ b/source4/librpc/rpc/dcerpc_sock.c @@ -403,6 +403,7 @@ NTSTATUS dcerpc_pipe_open_unix_stream(struct dcerpc_pipe **p, strncpy(sa.sun_path, path, sizeof(sa.sun_path)); if (connect(fd, &sa, sizeof(sa)) < 0) { + DEBUG(0, ("Unable to connect to unix socket %s: %s\n", path, strerror(errno))); return NT_STATUS_BAD_NETWORK_NAME; } @@ -487,6 +488,7 @@ NTSTATUS dcerpc_pipe_open_pipe(struct dcerpc_pipe **p, strncpy(sa.sun_path, full_path, sizeof(sa.sun_path)); if (connect(fd, &sa, sizeof(sa)) < 0) { + DEBUG(0, ("Unable to connect to unix socket %s (%s): %s\n", full_path, identifier, strerror(errno))); return NT_STATUS_BAD_NETWORK_NAME; } 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;iflags & 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;joptions[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; diff --git a/source4/rpc_server/dcerpc_sock.c b/source4/rpc_server/dcerpc_sock.c index 2d11431d0b..bffa5cffd8 100644 --- a/source4/rpc_server/dcerpc_sock.c +++ b/source4/rpc_server/dcerpc_sock.c @@ -90,8 +90,10 @@ static void add_socket_rpc_ncalrpc(struct server_service *service, char *full_path; if (!e->ep_description.endpoint) { - /* No identifier specified: generate one */ - e->ep_description.endpoint = generate_random_str(dce_ctx, 10); + /* No identifier specified: use DEFAULT. + * DO NOT hardcode this value anywhere else. Rather, specify + * no endpoint and let the epmapper worry about it. */ + e->ep_description.endpoint = talloc_strdup(dce_ctx, "DEFAULT"); } full_path = talloc_asprintf(dce_ctx, "%s/%s", lp_ncalrpc_dir(), e->ep_description.endpoint); -- cgit