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