diff options
Diffstat (limited to 'src/sbus/sssd_dbus_server.c')
-rw-r--r-- | src/sbus/sssd_dbus_server.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/sbus/sssd_dbus_server.c b/src/sbus/sssd_dbus_server.c index 3a7de8ff0..fadab7660 100644 --- a/src/sbus/sssd_dbus_server.c +++ b/src/sbus/sssd_dbus_server.c @@ -181,6 +181,7 @@ remove_socket_symlink(const char *symlink_name) int sbus_new_server(TALLOC_CTX *mem_ctx, struct tevent_context *ev, const char *address, + uid_t uid, gid_t gid, bool use_symlink, struct sbus_connection **_server, sbus_server_conn_init_fn init_fn, @@ -257,6 +258,17 @@ int sbus_new_server(TALLOC_CTX *mem_ctx, goto done; } + if (stat_buf.st_uid != uid || stat_buf.st_gid != gid) { + ret = chown(filename, uid, gid); + if (ret != EOK) { + DEBUG(SSSDBG_CRIT_FAILURE, + "chown failed for [%s]: [%d][%s].\n", filename, errno, + strerror(errno)); + ret = EIO; + goto done; + } + } + if ((stat_buf.st_mode & ~S_IFMT) != (S_IRUSR|S_IWUSR)) { ret = chmod(filename, (S_IRUSR|S_IWUSR)); if (ret != EOK) { |