From 494735f3d067bdeb97a5a98d09f9e2c4af705272 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Fri, 22 May 2020 20:30:24 +0200 Subject: [PATCH] sysusers: Move sync_rights and rename_and_apply_smack to basic --- src/basic/fileio.c | 22 ++++++++++++++++++++++ src/basic/fileio.h | 4 ++++ src/sysusers/sysusers.c | 22 ---------------------- 3 files changed, 26 insertions(+), 22 deletions(-) diff --git a/src/basic/fileio.c b/src/basic/fileio.c index 00dce02064f..ccdbfe895f7 100644 --- a/src/basic/fileio.c +++ b/src/basic/fileio.c @@ -1187,3 +1187,25 @@ int warn_file_is_world_accessible(const char *filename, struct stat *st, const c filename, st->st_mode & 07777); return 0; } + +int sync_rights(FILE *from, const char *to) { + struct stat st; + + if (fstat(fileno(from), &st) < 0) + return -errno; + + return chmod_and_chown_unsafe(to, st.st_mode & 07777, st.st_uid, st.st_gid); +} + +int rename_and_apply_smack(const char *from, const char *to) { + int r = 0; + if (rename(from, to) < 0) + return -errno; + +#ifdef SMACK_RUN_LABEL + r = mac_smack_apply(to, SMACK_ATTR_ACCESS, SMACK_FLOOR_LABEL); + if (r < 0) + return r; +#endif + return r; +} diff --git a/src/basic/fileio.h b/src/basic/fileio.h index e6062121a33..9dc3f187968 100644 --- a/src/basic/fileio.h +++ b/src/basic/fileio.h @@ -106,3 +106,7 @@ static inline int read_nul_string(FILE *f, size_t limit, char **ret) { int safe_fgetc(FILE *f, char *ret); int warn_file_is_world_accessible(const char *filename, struct stat *st, const char *unit, unsigned line); + +int sync_rights(FILE *from, const char *to); + +int rename_and_apply_smack(const char *temp_path, const char *dest_path); diff --git a/src/sysusers/sysusers.c b/src/sysusers/sysusers.c index 847aebc5169..3d68dc2e0fa 100644 --- a/src/sysusers/sysusers.c +++ b/src/sysusers/sysusers.c @@ -345,28 +345,6 @@ static int putsgent_with_members(const struct sgrp *sg, FILE *gshadow) { } #endif -static int sync_rights(FILE *from, const char *to) { - struct stat st; - - if (fstat(fileno(from), &st) < 0) - return -errno; - - return chmod_and_chown_unsafe(to, st.st_mode & 07777, st.st_uid, st.st_gid); -} - -static int rename_and_apply_smack(const char *temp_path, const char *dest_path) { - int r = 0; - if (rename(temp_path, dest_path) < 0) - return -errno; - -#ifdef SMACK_RUN_LABEL - r = mac_smack_apply(dest_path, SMACK_ATTR_ACCESS, SMACK_FLOOR_LABEL); - if (r < 0) - return r; -#endif - return r; -} - static const char* default_shell(uid_t uid) { return uid == 0 ? "/bin/sh" : NOLOGIN; } -- 2.39.2