diff options
author | Bastien Nocera <hadess@hadess.net> | 2022-07-22 20:30:12 +0200 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2022-07-24 19:56:26 +0200 |
commit | a1a4ca85f8b3318b276de1387c077b2131dbe8cf (patch) | |
tree | 501d8c5448a2b1c32467b3e68b07960a20128235 /src | |
parent | 1adecd296f8ef0f2e79c7ed3c4c76b18677828ae (diff) | |
download | accountsservice-a1a4ca85f8b3318b276de1387c077b2131dbe8cf.tar.gz |
main: Use new overridable sysconfdir
For the shadow file, as this cannot be overridden using mocklibc.
Diffstat (limited to 'src')
-rw-r--r-- | src/daemon.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/src/daemon.c b/src/daemon.c index 663aa43..51d7d83 100644 --- a/src/daemon.c +++ b/src/daemon.c @@ -51,8 +51,8 @@ #include "user.h" #include "accounts-user-generated.h" -#define PATH_PASSWD "/etc/passwd" -#define PATH_SHADOW "/etc/shadow" +#define PATH_PASSWD "passwd" +#define PATH_SHADOW "shadow" #define PATH_GROUP "/etc/group" enum { @@ -188,12 +188,15 @@ entry_generator_fgetpwent (Daemon *daemon, /* First iteration */ if (*state == NULL) { GHashTable *shadow_users = NULL; + g_autofree char *shadow_path = NULL; + g_autofree char *passwd_path = NULL; FILE *fp; struct spwd *shadow_entry; - fp = fopen (PATH_SHADOW, "r"); + shadow_path = g_build_filename (get_sysconfdir (), PATH_SHADOW, NULL); + fp = fopen (shadow_path, "r"); if (fp == NULL) { - g_warning ("Unable to open %s: %s", PATH_SHADOW, g_strerror (errno)); + g_warning ("Unable to open %s: %s", shadow_path, g_strerror (errno)); return NULL; } @@ -223,10 +226,11 @@ entry_generator_fgetpwent (Daemon *daemon, return NULL; } - fp = fopen (PATH_PASSWD, "r"); + passwd_path = g_build_filename (get_sysconfdir (), PATH_PASSWD, NULL); + fp = fopen (passwd_path, "r"); if (fp == NULL) { g_clear_pointer (&shadow_users, g_hash_table_unref); - g_warning ("Unable to open %s: %s", PATH_PASSWD, g_strerror (errno)); + g_warning ("Unable to open %s: %s", passwd_path, g_strerror (errno)); return NULL; } @@ -746,6 +750,8 @@ static void daemon_init (Daemon *daemon) { DaemonPrivate *priv = daemon_get_instance_private (daemon); + g_autofree char *shadow_path = NULL; + g_autofree char *passwd_path = NULL; priv->extension_ifaces = daemon_read_extension_ifaces (); @@ -753,11 +759,13 @@ daemon_init (Daemon *daemon) priv->pending_list_cached_users = g_queue_new (); + passwd_path = g_build_filename (get_sysconfdir (), PATH_PASSWD, NULL); priv->passwd_monitor = setup_monitor (daemon, - PATH_PASSWD, + passwd_path, on_users_monitor_changed); + shadow_path = g_build_filename (get_sysconfdir (), PATH_SHADOW, NULL); priv->shadow_monitor = setup_monitor (daemon, - PATH_SHADOW, + shadow_path, on_users_monitor_changed); priv->group_monitor = setup_monitor (daemon, PATH_GROUP, |