s3-rpc_server: Add special tsocket address for ncalrpc_as_system.
authorAndreas Schneider <asn@samba.org>
Thu, 17 Apr 2014 09:00:54 +0000 (11:00 +0200)
committerStefan Metzmacher <metze@samba.org>
Thu, 24 Apr 2014 09:21:05 +0000 (11:21 +0200)
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
source3/rpc_server/rpc_server.c

index 58c16c01a358de23d3d9b6c48c6288e7ebd4deb0..16997dfa54413145118b5d812a047348a540496e 100644 (file)
@@ -1013,6 +1013,28 @@ void dcerpc_ncacn_accept(struct tevent_context *ev_ctx,
                                          "uid - %s!\n", strerror(errno)));
                        } else {
                                if (uid == sec_initial_uid()) {
+                                       TALLOC_FREE(ncacn_conn->client);
+
+                                       rc = tsocket_address_unix_from_path(ncacn_conn,
+                                                                           "/root/ncalrpc_as_system",
+                                                                           &ncacn_conn->client);
+                                       if (rc < 0) {
+                                               DEBUG(0, ("Out of memory!\n"));
+                                               talloc_free(ncacn_conn);
+                                               close(s);
+                                               return;
+                                       }
+
+                                       TALLOC_FREE(ncacn_conn->client_name);
+                                       ncacn_conn->client_name = tsocket_address_unix_path(ncacn_conn->client,
+                                                                                           ncacn_conn);
+                                       if (ncacn_conn->client == NULL) {
+                                               DEBUG(0, ("Out of memory!\n"));
+                                               talloc_free(ncacn_conn);
+                                               close(s);
+                                               return;
+                                       }
+
                                        system_user = true;
                                }
                        }