summaryrefslogtreecommitdiffstats
path: root/src/sbus/sssd_dbus_server.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sbus/sssd_dbus_server.c')
-rw-r--r--src/sbus/sssd_dbus_server.c12
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) {