URL: https://github.com/SSSD/sssd/pull/5948
Author: lamabro23
 Title: #5948: [Draft] Questions
Action: opened

PR body:
"""
None
"""

To pull the PR as Git branch:
git remote add ghsssd https://github.com/SSSD/sssd
git fetch ghsssd pull/5948/head:pr5948
git checkout pr5948
From 010e4fcc72d623379847855e02ef7dc5a9220df7 Mon Sep 17 00:00:00 2001
From: duradnik <durad...@redhat.com>
Date: Sun, 24 Oct 2021 14:53:05 +0200
Subject: [PATCH 1/2] Ignore clangd's compile_commands.json

---
 .gitignore | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.gitignore b/.gitignore
index 0db85d90df..95458b4ba5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
 *.[oa]
+compile_commands.json
 configure
 config.log
 config.status

From a52f7f8b644c9d20e2d85f3996a6f7c9fc419aa8 Mon Sep 17 00:00:00 2001
From: Dusan Uradnik <dusanuradni...@gmail.com>
Date: Thu, 9 Dec 2021 20:17:02 +0100
Subject: [PATCH 2/2] Modify sssd to open server on /private/sbus-master

---
 src/monitor/monitor.c                         |   5 +--
 src/providers/data_provider/dp.c              |   4 +-
 src/providers/proxy/proxy_child.c             |  11 +----
 src/responder/common/.responder.h.swo         | Bin 0 -> 20480 bytes
 src/responder/common/responder.h              |   1 -
 src/responder/common/responder_common.c       |  17 +++-----
 src/sbus/connection/sbus_connection.c         |  14 +++---
 src/sbus/connection/sbus_connection_connect.c |  20 ++++-----
 src/sbus/connection/sbus_dbus.c               |  18 +++-----
 src/sbus/connection/sbus_dbus_private.h       |   6 ++-
 src/sbus/connection/sbus_reconnect.c          |   4 +-
 src/sbus/sbus.h                               |   8 ----
 src/sbus/sbus_private.h                       |   1 -
 src/sbus/server/sbus_server.c                 |  30 +++++--------
 src/sbus/sync/sbus_sync.c                     |   2 +-
 src/sss_iface/sss_iface.c                     |  41 ++++++++++--------
 src/sss_iface/sss_iface.h                     |   5 ++-
 src/sss_iface/sss_iface_async.h               |   1 -
 18 files changed, 78 insertions(+), 110 deletions(-)
 create mode 100644 src/responder/common/.responder.h.swo

diff --git a/src/monitor/monitor.c b/src/monitor/monitor.c
index 60a9658642..c8f999c4ae 100644
--- a/src/monitor/monitor.c
+++ b/src/monitor/monitor.c
@@ -1991,9 +1991,8 @@ static int monitor_process_init(struct mt_ctx *ctx,
     talloc_zfree(tmp_ctx);
 
     req = sbus_server_create_and_connect_send(ctx, ctx->ev, SSS_BUS_MONITOR,
-                                              NULL, SSS_MONITOR_ADDRESS,
-                                              false, 100, ctx->uid, ctx->gid,
-                                              NULL, NULL);
+                                              NULL, false, 100, ctx->uid,
+                                              ctx->gid, NULL, NULL);
     if (req == NULL) {
         ret = ENOMEM;
         goto done;
diff --git a/src/providers/data_provider/dp.c b/src/providers/data_provider/dp.c
index 64fe847b2f..51747d9bc2 100644
--- a/src/providers/data_provider/dp.c
+++ b/src/providers/data_provider/dp.c
@@ -158,7 +158,7 @@ dp_init_send(TALLOC_CTX *mem_ctx,
         return NULL;
     }
 
-    sbus_address = sss_iface_domain_address(state, be_ctx->domain);
+    sbus_address = sss_iface_domain_address(state);
     if (sbus_address == NULL) {
         DEBUG(SSSDBG_FATAL_FAILURE, "Could not get sbus backend address.\n");
         ret = ENOMEM;
@@ -185,7 +185,7 @@ dp_init_send(TALLOC_CTX *mem_ctx,
     talloc_set_destructor(state->provider, dp_destructor);
 
     subreq = sbus_server_create_and_connect_send(state->provider, ev,
-        sbus_name, NULL, sbus_address, true, 1000, uid, gid,
+        sbus_name, NULL, true, 1000, uid, gid,
         (sbus_server_on_connection_cb)dp_client_init,
         (sbus_server_on_connection_data)state->provider);
     if (subreq == NULL) {
diff --git a/src/providers/proxy/proxy_child.c b/src/providers/proxy/proxy_child.c
index d9e3d0d874..9bc95fbc37 100644
--- a/src/providers/proxy/proxy_child.c
+++ b/src/providers/proxy/proxy_child.c
@@ -337,7 +337,6 @@ proxy_cli_init(struct pc_ctx *ctx)
 {
     TALLOC_CTX *tmp_ctx;
     struct tevent_req *subreq;
-    char *sbus_address;
     char *sbus_busname;
     char *sbus_cliname;
     errno_t ret;
@@ -362,12 +361,6 @@ proxy_cli_init(struct pc_ctx *ctx)
         {NULL, NULL}
     };
 
-    sbus_address = sss_iface_domain_address(tmp_ctx, ctx->domain);
-    if (sbus_address == NULL) {
-        ret = ENOMEM;
-        goto done;
-    }
-
     sbus_busname = sss_iface_domain_bus(tmp_ctx, ctx->domain);
     if (sbus_busname == NULL) {
         ret = ENOMEM;
@@ -380,10 +373,10 @@ proxy_cli_init(struct pc_ctx *ctx)
         goto done;
     }
 
-    ret = sss_iface_connect_address(ctx, ctx->ev, sbus_cliname, sbus_address,
+    ret = sss_iface_connect_address(ctx, ctx->ev, sbus_cliname,
                                     NULL, &ctx->conn);
     if (ret != EOK) {
-        DEBUG(SSSDBG_FATAL_FAILURE, "Unable to connect to %s\n", sbus_address);
+        DEBUG(SSSDBG_FATAL_FAILURE, "Unable to connect to the master bus!\n");
         goto done;
     }
 
diff --git a/src/responder/common/.responder.h.swo b/src/responder/common/.responder.h.swo
new file mode 100644
index 0000000000000000000000000000000000000000..9e6fca7b310ddbbb3e04c135fe72fc6592528497
GIT binary patch
literal 20480
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
XL=1IecnF6i9)cV`;lg2DgvtB|Ig{>-

literal 0
HcmV?d00001

diff --git a/src/responder/common/responder.h b/src/responder/common/responder.h
index 90575b89e7..2c7d9cb287 100644
--- a/src/responder/common/responder.h
+++ b/src/responder/common/responder.h
@@ -88,7 +88,6 @@ struct be_conn {
     struct sss_domain_info *domain;
 
     char *bus_name;
-    char *sbus_address;
     struct sbus_connection *conn;
 };
 
diff --git a/src/responder/common/responder_common.c b/src/responder/common/responder_common.c
index 3207e26e6f..f1ed6131c4 100644
--- a/src/responder/common/responder_common.c
+++ b/src/responder/common/responder_common.c
@@ -32,6 +32,7 @@
 #include <fcntl.h>
 #include <popt.h>
 #include <dbus/dbus.h>
+#include <talloc.h>
 
 #include "util/util.h"
 #include "util/strtonum.h"
@@ -735,13 +736,6 @@ sss_dp_init(struct resp_ctx *rctx,
     be_conn->domain = domain;
     be_conn->rctx = rctx;
 
-    be_conn->sbus_address = sss_iface_domain_address(be_conn, domain);
-    if (be_conn->sbus_address == NULL) {
-        DEBUG(SSSDBG_FATAL_FAILURE, "Could not locate DP address.\n");
-        ret = ENOMEM;
-        goto done;
-    }
-
     be_conn->bus_name = sss_iface_domain_bus(be_conn, domain);
     if (be_conn->bus_name == NULL) {
         DEBUG(SSSDBG_FATAL_FAILURE, "Could not locate DP address.\n");
@@ -749,9 +743,8 @@ sss_dp_init(struct resp_ctx *rctx,
         goto done;
     }
 
-    ret = sss_iface_connect_address(be_conn, rctx->ev, conn_name,
-                                    be_conn->sbus_address, NULL,
-                                    &be_conn->conn);
+    ret = sss_iface_connect_address(be_conn, rctx->ev,
+                                    conn_name, NULL, &be_conn->conn);
     if (ret != EOK) {
         DEBUG(SSSDBG_FATAL_FAILURE, "Failed to connect to backend server.\n");
         goto done;
@@ -764,8 +757,8 @@ sss_dp_init(struct resp_ctx *rctx,
         goto done;
     }
 
-    sbus_reconnect_enable(be_conn->conn, max_retries, sss_dp_on_reconnect,
-                          be_conn);
+    sbus_reconnect_enable(be_conn->conn, max_retries,
+                          sss_dp_on_reconnect, be_conn);
 
     DLIST_ADD_END(rctx->be_conns, be_conn, struct be_conn *);
 
diff --git a/src/sbus/connection/sbus_connection.c b/src/sbus/connection/sbus_connection.c
index fb53f7db2c..3a31cc0b73 100644
--- a/src/sbus/connection/sbus_connection.c
+++ b/src/sbus/connection/sbus_connection.c
@@ -29,6 +29,7 @@
 
 #include "util/util.h"
 #include "sbus/connection/sbus_dbus_private.h"
+#include "sss_iface/sss_iface.h"
 #include "sbus/sbus_private.h"
 
 struct sbus_connection_access {
@@ -125,7 +126,6 @@ struct sbus_connection *
 sbus_connection_init(TALLOC_CTX *mem_ctx,
                      struct tevent_context *ev,
                      DBusConnection *dbus_conn,
-                     const char *address,
                      const char *dbus_name,
                      enum sbus_connection_type type,
                      time_t *last_activity_time)
@@ -148,13 +148,11 @@ sbus_connection_init(TALLOC_CTX *mem_ctx,
     sbus_conn->type = type;
     sbus_conn->last_activity = last_activity_time;
 
-    if (address != NULL) {
-        sbus_conn->address = talloc_strdup(sbus_conn, address);
-        if (sbus_conn->address == NULL) {
-            DEBUG(SSSDBG_CRIT_FAILURE, "Out of memory!\n");
-            ret = ENOMEM;
-            goto done;
-        }
+    sbus_conn->address = talloc_strdup(sbus_conn, SSS_MASTER_ADDRESS);
+    if (sbus_conn->address == NULL) {
+        DEBUG(SSSDBG_CRIT_FAILURE, "Out of memory!\n");
+        ret = ENOMEM;
+        goto done;
     }
 
     if (dbus_name != NULL) {
diff --git a/src/sbus/connection/sbus_connection_connect.c b/src/sbus/connection/sbus_connection_connect.c
index 9cfe86206b..842b44b0cc 100644
--- a/src/sbus/connection/sbus_connection_connect.c
+++ b/src/sbus/connection/sbus_connection_connect.c
@@ -156,7 +156,7 @@ sbus_connect_system(TALLOC_CTX *mem_ctx,
         return NULL;
     }
 
-    sbus_conn = sbus_connection_init(mem_ctx, ev, dbus_conn, NULL, dbus_name,
+    sbus_conn = sbus_connection_init(mem_ctx, ev, dbus_conn, dbus_name,
                                      SBUS_CONNECTION_SYSBUS,
                                      last_activity_time);
     dbus_connection_unref(dbus_conn);
@@ -179,7 +179,6 @@ sbus_connect_system(TALLOC_CTX *mem_ctx,
 struct sbus_connection *
 sbus_connect_private(TALLOC_CTX *mem_ctx,
                      struct tevent_context *ev,
-                     const char *address,
                      const char *dbus_name,
                      time_t *last_activity_time)
 {
@@ -187,12 +186,12 @@ sbus_connect_private(TALLOC_CTX *mem_ctx,
     DBusConnection *dbus_conn;
     errno_t ret;
 
-    dbus_conn = sbus_dbus_connect_address(address, dbus_name, true);
+    dbus_conn = sbus_dbus_connect_address(dbus_name, true);
     if (dbus_conn == NULL) {
         return NULL;
     }
 
-    sbus_conn = sbus_connection_init(mem_ctx, ev, dbus_conn, address, dbus_name,
+    sbus_conn = sbus_connection_init(mem_ctx, ev, dbus_conn, dbus_name,
                                      SBUS_CONNECTION_ADDRESS,
                                      last_activity_time);
     dbus_connection_unref(dbus_conn);
@@ -221,7 +220,6 @@ static void sbus_connect_private_done(struct tevent_req *subreq);
 struct tevent_req *
 sbus_connect_private_send(TALLOC_CTX *mem_ctx,
                           struct tevent_context *ev,
-                          const char *address,
                           const char *dbus_name,
                           time_t *last_activity_time)
 {
@@ -238,14 +236,15 @@ sbus_connect_private_send(TALLOC_CTX *mem_ctx,
         return NULL;
     }
 
-    dbus_conn = sbus_dbus_connect_address(address, dbus_name, false);
+    dbus_conn = sbus_dbus_connect_address(dbus_name, false);
     if (dbus_conn == NULL) {
         ret = ENOMEM;
         goto done;
     }
 
-    state->conn = sbus_connection_init(state, ev, dbus_conn, address,
-                                       dbus_name, SBUS_CONNECTION_ADDRESS,
+    state->conn = sbus_connection_init(state, ev,
+                                       dbus_conn, dbus_name,
+                                       SBUS_CONNECTION_ADDRESS,
                                        last_activity_time);
     dbus_connection_unref(dbus_conn);
     if (state->conn == NULL) {
@@ -340,7 +339,6 @@ sbus_server_create_and_connect_send(TALLOC_CTX *mem_ctx,
                                     struct tevent_context *ev,
                                     const char *dbus_name,
                                     time_t *last_activity_time,
-                                    const char *address,
                                     bool use_symlink,
                                     uint32_t max_connections,
                                     uid_t uid,
@@ -359,7 +357,7 @@ sbus_server_create_and_connect_send(TALLOC_CTX *mem_ctx,
         return NULL;
     }
 
-    state->server = sbus_server_create(state, ev, address, use_symlink,
+    state->server = sbus_server_create(state, ev, use_symlink,
                                        max_connections, uid, gid,
                                        on_conn_cb, on_conn_data);
     if (state->server == NULL) {
@@ -367,7 +365,7 @@ sbus_server_create_and_connect_send(TALLOC_CTX *mem_ctx,
         goto done;
     }
 
-    subreq = sbus_connect_private_send(state, ev, address, dbus_name,
+    subreq = sbus_connect_private_send(state, ev, dbus_name,
                                        last_activity_time);
     if (subreq == NULL) {
         DEBUG(SSSDBG_CRIT_FAILURE, "Unable to create subrequest!\n");
diff --git a/src/sbus/connection/sbus_dbus.c b/src/sbus/connection/sbus_dbus.c
index e30c873712..156499d7e6 100644
--- a/src/sbus/connection/sbus_dbus.c
+++ b/src/sbus/connection/sbus_dbus.c
@@ -25,6 +25,7 @@
 #include <dbus/dbus.h>
 
 #include "util/util.h"
+#include "sss_iface/sss_iface.h"
 #include "sbus/connection/sbus_dbus_private.h"
 
 static errno_t
@@ -120,24 +121,19 @@ sbus_dbus_connect_bus(DBusBusType bus, const char *name)
 }
 
 DBusConnection *
-sbus_dbus_connect_address(const char *address, const char *name, bool init)
+sbus_dbus_connect_address(const char *name, bool init)
 {
     DBusConnection *dbus_conn;
     DBusError dbus_error;
     dbus_bool_t dbret;
     errno_t ret;
 
-    if (address == NULL) {
-        DEBUG(SSSDBG_CRIT_FAILURE, "Can not connect to an empty address!\n");
-        return NULL;
-    }
-
     dbus_error_init(&dbus_error);
 
-    dbus_conn = dbus_connection_open(address, &dbus_error);
+    dbus_conn = dbus_connection_open(SSS_MASTER_ADDRESS, &dbus_error);
     if (dbus_conn == NULL) {
         DEBUG(SSSDBG_CRIT_FAILURE, "Unable to connect to %s [%s]: %s\n",
-              address, dbus_error.name, dbus_error.message);
+              SSS_MASTER_ADDRESS, dbus_error.name, dbus_error.message);
         ret = EIO;
         goto done;
     }
@@ -150,7 +146,7 @@ sbus_dbus_connect_address(const char *address, const char *name, bool init)
     dbret = dbus_bus_register(dbus_conn, &dbus_error);
     if (!dbret) {
         DEBUG(SSSDBG_CRIT_FAILURE, "Unable to register to %s [%s]: %s\n",
-              address, dbus_error.name, dbus_error.message);
+              SSS_MASTER_ADDRESS, dbus_error.name, dbus_error.message);
         ret = EIO;
         goto done;
     }
@@ -164,9 +160,9 @@ sbus_dbus_connect_address(const char *address, const char *name, bool init)
     }
 
     if (name == NULL) {
-        DEBUG(SSSDBG_TRACE_FUNC, "Connected to %s bus as anonymous\n", address);
+        DEBUG(SSSDBG_TRACE_FUNC, "Connected to %s bus as anonymous\n", SSS_MASTER_ADDRESS);
     } else {
-        DEBUG(SSSDBG_TRACE_FUNC, "Connected to %s bus as %s\n", address, name);
+        DEBUG(SSSDBG_TRACE_FUNC, "Connected to %s bus as %s\n", SSS_MASTER_ADDRESS, name);
     }
 
     ret = EOK;
diff --git a/src/sbus/connection/sbus_dbus_private.h b/src/sbus/connection/sbus_dbus_private.h
index 2e45494f78..10d4087368 100644
--- a/src/sbus/connection/sbus_dbus_private.h
+++ b/src/sbus/connection/sbus_dbus_private.h
@@ -23,12 +23,14 @@
 
 #include <dbus/dbus.h>
 
+/* Master DBus server */
+#define SBUS_DBUS_NO_FLAGS 0x0
+
 /* Get D-Bus connection to a D-Bus system or session bus. */
 DBusConnection *sbus_dbus_connect_bus(DBusBusType bus, const char *name);
 
 /* Get D-Bus connection to a D-Bus address. */
-DBusConnection *sbus_dbus_connect_address(const char *address,
-                                          const char *name,
+DBusConnection *sbus_dbus_connect_address(const char *name,
                                           bool init);
 
 #endif /* _SBUS_DBUS_PRIVATE_H_ */
diff --git a/src/sbus/connection/sbus_reconnect.c b/src/sbus/connection/sbus_reconnect.c
index a0055e58d4..8b83289a42 100644
--- a/src/sbus/connection/sbus_reconnect.c
+++ b/src/sbus/connection/sbus_reconnect.c
@@ -90,9 +90,7 @@ sbus_reconnect_attempt(struct tevent_context *ev,
          * so those two are the only methods that are sent to the new
          * dbus connection before it is properly initialized.
          */
-        dbus_conn = sbus_dbus_connect_address(sbus_conn->address,
-                                              sbus_conn->wellknown_name,
-                                              true);
+        dbus_conn = sbus_dbus_connect_address(sbus_conn->wellknown_name, true);
         break;
     case SBUS_CONNECTION_SYSBUS:
         DEBUG(SSSDBG_MINOR_FAILURE, "Making reconnection attempt %d "
diff --git a/src/sbus/sbus.h b/src/sbus/sbus.h
index 0983879f0e..72e1cf5a69 100644
--- a/src/sbus/sbus.h
+++ b/src/sbus/sbus.h
@@ -68,7 +68,6 @@ sbus_connect_system(TALLOC_CTX *mem_ctx,
  *
  * @param mem_ctx                Memory context.
  * @param ev                     Tevent context.
- * @param address                Remote end-point address.
  * @param dbus_name              Name of this end-point.
  * @param last_activity_time     Pointer to a time that is updated each time
  *                               an event occurs.
@@ -80,7 +79,6 @@ sbus_connect_system(TALLOC_CTX *mem_ctx,
 struct sbus_connection *
 sbus_connect_private(TALLOC_CTX *mem_ctx,
                      struct tevent_context *ev,
-                     const char *address,
                      const char *dbus_name,
                      time_t *last_activity_time);
 
@@ -98,7 +96,6 @@ sbus_connect_private(TALLOC_CTX *mem_ctx,
  *
  * @param mem_ctx                Memory context.
  * @param ev                     Tevent context.
- * @param address                Remote end-point address.
  * @param dbus_name              Name of this end-point.
  * @param last_activity_time     Pointer to a time that is updated each time
  *                               an event occurs.
@@ -110,7 +107,6 @@ sbus_connect_private(TALLOC_CTX *mem_ctx,
 struct tevent_req *
 sbus_connect_private_send(TALLOC_CTX *mem_ctx,
                           struct tevent_context *ev,
-                          const char *address,
                           const char *dbus_name,
                           time_t *last_activity_time);
 
@@ -134,7 +130,6 @@ errno_t sbus_connect_private_recv(TALLOC_CTX *mem_ctx,
  *
  * @param mem_ctx                Memory context.
  * @param ev                     Tevent context.
- * @param address                Socket address.
  * @param use_symlink            If a symlink to @address should be created.
  * @param uid                    Socket owner uid.
  * @param gid                    Socket owner gid.
@@ -146,7 +141,6 @@ errno_t sbus_connect_private_recv(TALLOC_CTX *mem_ctx,
 struct sbus_server *
 sbus_server_create(TALLOC_CTX *mem_ctx,
                    struct tevent_context *ev,
-                   const char *address,
                    bool use_symlink,
                    uint32_t max_connections,
                    uid_t uid,
@@ -162,7 +156,6 @@ sbus_server_create(TALLOC_CTX *mem_ctx,
  * @param dbus_name              Name of the connection.
  * @param last_activity_time     Pointer to a time that is updated each time
  *                               an event occurs on connection.
- * @param address                Socket address.
  * @param use_symlink            If a symlink to @address should be created.
  * @param uid                    Socket owner uid.
  * @param gid                    Socket owner gid.
@@ -176,7 +169,6 @@ sbus_server_create_and_connect_send(TALLOC_CTX *mem_ctx,
                                     struct tevent_context *ev,
                                     const char *dbus_name,
                                     time_t *last_activity_time,
-                                    const char *address,
                                     bool use_symlink,
                                     uint32_t max_connections,
                                     uid_t uid,
diff --git a/src/sbus/sbus_private.h b/src/sbus/sbus_private.h
index eef397b865..370263e2f3 100644
--- a/src/sbus/sbus_private.h
+++ b/src/sbus/sbus_private.h
@@ -174,7 +174,6 @@ struct sbus_connection *
 sbus_connection_init(TALLOC_CTX *mem_ctx,
                      struct tevent_context *ev,
                      DBusConnection *dbus_conn,
-                     const char *address,
                      const char *dbus_name,
                      enum sbus_connection_type type,
                      time_t *last_activity_time);
diff --git a/src/sbus/server/sbus_server.c b/src/sbus/server/sbus_server.c
index 46b3a42b87..b723f8521a 100644
--- a/src/sbus/server/sbus_server.c
+++ b/src/sbus/server/sbus_server.c
@@ -32,6 +32,7 @@
 #include "util/util.h"
 #include "util/sss_ptr_hash.h"
 #include "sbus/sbus_private.h"
+#include "sss_iface/sss_iface.h"
 
 struct sbus_server_on_connection {
     const char *name;
@@ -55,22 +56,17 @@ sbus_server_get_filename(const char *address)
 
 static const char *
 sbus_server_get_socket_address(TALLOC_CTX *mem_ctx,
-                               const char *address,
                                bool use_symlink)
 {
-    unsigned long pid;
-
     if (!use_symlink) {
-        return talloc_strdup(mem_ctx, address);
+        return talloc_strdup(mem_ctx, SSS_MASTER_ADDRESS);
     }
 
-    pid = getpid();
-    return talloc_asprintf(mem_ctx, "%s.%lu", address, pid);
+    return talloc_asprintf(mem_ctx, "%s.%s", SSS_MASTER_ADDRESS, "tmp");
 }
 
 static errno_t
 sbus_server_get_socket(TALLOC_CTX *mem_ctx,
-                       const char *address,
                        bool use_symlink,
                        const char **_socket_address,
                        const char **_filename,
@@ -81,8 +77,7 @@ sbus_server_get_socket(TALLOC_CTX *mem_ctx,
     const char *filename;
 
     /* Get D-Bus socket address. */
-    socket_address = sbus_server_get_socket_address(mem_ctx, address,
-                                                    use_symlink);
+    socket_address = sbus_server_get_socket_address(mem_ctx, use_symlink);
     if (socket_address == NULL) {
         DEBUG(SSSDBG_CRIT_FAILURE, "Out of memory!\n");
         return ENOMEM;
@@ -95,7 +90,7 @@ sbus_server_get_socket(TALLOC_CTX *mem_ctx,
     }
 
     if (use_symlink) {
-        symlink = sbus_server_get_filename(address);
+        symlink = sbus_server_get_filename(SSS_MASTER_ADDRESS);
         if (symlink == NULL) {
             return EINVAL;
         }
@@ -306,7 +301,6 @@ sbus_server_check_file(const char *filename, uid_t uid, gid_t gid)
 static DBusServer *
 sbus_server_setup_dbus(TALLOC_CTX *mem_ctx,
                        struct tevent_context *ev,
-                       const char *address,
                        bool use_symlink,
                        uid_t uid,
                        gid_t gid,
@@ -327,8 +321,9 @@ sbus_server_setup_dbus(TALLOC_CTX *mem_ctx,
     }
 
     /* Get socket address. */
-    ret = sbus_server_get_socket(tmp_ctx, address, use_symlink,
-                                 &socket_address, &filename, &symlink);
+    ret = sbus_server_get_socket(tmp_ctx, use_symlink,
+                                 &socket_address, &filename,
+                                 &symlink);
     if (ret != EOK) {
         goto done;
     }
@@ -455,8 +450,7 @@ sbus_server_new_connection(DBusServer *dbus_server,
      */
 
     sbus_conn = sbus_connection_init(sbus_server, sbus_server->ev, dbus_conn,
-                                     NULL, NULL, SBUS_CONNECTION_CLIENT,
-                                     NULL);
+                                     NULL, SBUS_CONNECTION_CLIENT, NULL);
     if (sbus_conn == NULL) {
         DEBUG(SSSDBG_CRIT_FAILURE, "Closing connection, unable to setup\n");
         dbus_connection_close(dbus_conn);
@@ -635,7 +629,6 @@ static int sbus_server_destructor(struct sbus_server *server)
 struct sbus_server *
 sbus_server_create(TALLOC_CTX *mem_ctx,
                    struct tevent_context *ev,
-                   const char *address,
                    bool use_symlink,
                    uint32_t max_connections,
                    uid_t uid,
@@ -657,8 +650,9 @@ sbus_server_create(TALLOC_CTX *mem_ctx,
     sbus_server->data_slot = -1;
     talloc_set_destructor(sbus_server, sbus_server_destructor);
 
-    dbus_server = sbus_server_setup_dbus(sbus_server, ev, address,
-                                         use_symlink, uid, gid, &symlink);
+    dbus_server = sbus_server_setup_dbus(sbus_server, ev,
+                                         use_symlink, uid,
+                                         gid, &symlink);
     if (dbus_server == NULL) {
         DEBUG(SSSDBG_CRIT_FAILURE, "Unable to setup a D-Bus server!\n");
         ret = ENOMEM;
diff --git a/src/sbus/sync/sbus_sync.c b/src/sbus/sync/sbus_sync.c
index 55fcf6e066..a0f13c3400 100644
--- a/src/sbus/sync/sbus_sync.c
+++ b/src/sbus/sync/sbus_sync.c
@@ -92,7 +92,7 @@ sbus_sync_connect_private(TALLOC_CTX *mem_ctx,
     struct sbus_sync_connection *sbus_conn;
     DBusConnection *dbus_conn;
 
-    dbus_conn = sbus_dbus_connect_address(address, dbus_name, true);
+    dbus_conn = sbus_dbus_connect_address(dbus_name, true);
     if (dbus_conn == NULL) {
         return NULL;
     }
diff --git a/src/sss_iface/sss_iface.c b/src/sss_iface/sss_iface.c
index ed70e30eb1..5a1ee3d719 100644
--- a/src/sss_iface/sss_iface.c
+++ b/src/sss_iface/sss_iface.c
@@ -18,6 +18,7 @@
     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+#include <talloc.h>
 #include <unistd.h>
 #include <sys/stat.h>
 #include <resolv.h>
@@ -28,15 +29,9 @@
 #include "sss_iface/sss_iface_async.h"
 
 char *
-sss_iface_domain_address(TALLOC_CTX *mem_ctx,
-                         struct sss_domain_info *domain)
+sss_iface_domain_address(TALLOC_CTX *mem_ctx)
 {
-    struct sss_domain_info *head;
-
-    /* There is only one bus that belongs to the top level domain. */
-    head = get_domains_head(domain);
-
-    return talloc_asprintf(mem_ctx, SSS_BACKEND_ADDRESS, head->name);
+    return talloc_strdup(mem_ctx, SSS_MASTER_ADDRESS);
 }
 
 char *
@@ -77,25 +72,34 @@ errno_t
 sss_iface_connect_address(TALLOC_CTX *mem_ctx,
                           struct tevent_context *ev,
                           const char *conn_name,
-                          const char *address,
                           time_t *last_request_time,
                           struct sbus_connection **_conn)
 {
     struct sbus_connection *conn;
     const char *filename;
+    TALLOC_CTX *tmp_ctx;
+    const char *address;
     errno_t ret;
     uid_t check_uid;
     gid_t check_gid;
 
+    tmp_ctx = talloc_new(NULL);
+    if (tmp_ctx == NULL) {
+        return ENOMEM;
+    }
+
+    address = talloc_strdup(tmp_ctx, SSS_MASTER_ADDRESS);
     if (address == NULL) {
-        return EINVAL;
+        ret = ENOMEM;
+        goto done;
     }
 
     filename = strchr(address, '/');
     if (filename == NULL) {
         DEBUG(SSSDBG_CRIT_FAILURE,
               "Unexpected dbus address [%s].\n", address);
-        return EIO;
+        ret = EIO;
+        goto done;
     }
 
     check_uid = geteuid();
@@ -111,18 +115,22 @@ sss_iface_connect_address(TALLOC_CTX *mem_ctx,
                      S_IFSOCK|S_IRUSR|S_IWUSR, 0, NULL, true);
     if (ret != EOK) {
         DEBUG(SSSDBG_CRIT_FAILURE, "check_file failed for [%s].\n", filename);
-        return EIO;
+        ret = EIO;
+        goto done;
     }
 
-    conn = sbus_connect_private(mem_ctx, ev, address,
-                                conn_name, last_request_time);
+    conn = sbus_connect_private(mem_ctx, ev, conn_name, last_request_time);
     if (conn == NULL) { /* most probably sbus_dbus_connect_address() failed */
-        return EFAULT;
+        ret = EFAULT;
+        goto done;
     }
 
     *_conn = conn;
 
-    return EOK;
+done:
+    talloc_free(tmp_ctx);
+
+    return ret;
 }
 
 static void
@@ -143,7 +151,6 @@ sss_monitor_service_init(TALLOC_CTX *mem_ctx,
     errno_t ret;
 
     ret = sss_iface_connect_address(mem_ctx, ev, conn_name,
-                                    SSS_MONITOR_ADDRESS,
                                     last_request_time, &conn);
     if (ret != EOK) {
         DEBUG(SSSDBG_CRIT_FAILURE, "Unable to connect to monitor sbus server "
diff --git a/src/sss_iface/sss_iface.h b/src/sss_iface/sss_iface.h
index d4b8e50679..c491904b14 100644
--- a/src/sss_iface/sss_iface.h
+++ b/src/sss_iface/sss_iface.h
@@ -32,6 +32,8 @@
 
 #define SSS_MONITOR_ADDRESS "unix:path=" PIPE_PATH "/private/sbus-monitor"
 #define SSS_BACKEND_ADDRESS "unix:path=" PIPE_PATH "/private/sbus-dp_%s"
+/* Main DBus server */
+#define SSS_MASTER_ADDRESS "unix:path=" PIPE_PATH "/private/sbus-master"
 
 #define SSS_BUS_MONITOR     "sssd.monitor"
 #define SSS_BUS_AUTOFS      "sssd.autofs"
@@ -64,8 +66,7 @@
  * Return domain address.
  */
 char *
-sss_iface_domain_address(TALLOC_CTX *mem_ctx,
-                         struct sss_domain_info *domain);
+sss_iface_domain_address(TALLOC_CTX *mem_ctx);
 
 /**
  * Return domain bus name.
diff --git a/src/sss_iface/sss_iface_async.h b/src/sss_iface/sss_iface_async.h
index a8e51a4fb5..38e7d4aa39 100644
--- a/src/sss_iface/sss_iface_async.h
+++ b/src/sss_iface/sss_iface_async.h
@@ -35,7 +35,6 @@ errno_t
 sss_iface_connect_address(TALLOC_CTX *mem_ctx,
                           struct tevent_context *ev,
                           const char *conn_name,
-                          const char *address,
                           time_t *last_request_time,
                           struct sbus_connection **_conn);
 
_______________________________________________
sssd-devel mailing list -- sssd-devel@lists.fedorahosted.org
To unsubscribe send an email to sssd-devel-le...@lists.fedorahosted.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedorahosted.org/archives/list/sssd-devel@lists.fedorahosted.org
Do not reply to spam on the list, report it: 
https://pagure.io/fedora-infrastructure

Reply via email to