]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sysusers: Move sync_rights and rename_and_apply_smack to basic
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Fri, 22 May 2020 18:30:24 +0000 (20:30 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 27 May 2020 16:54:25 +0000 (18:54 +0200)
src/basic/fileio.c
src/basic/fileio.h
src/sysusers/sysusers.c

index 00dce02064f579884a4feb1458fa6defeba29c7c..ccdbfe895f71f4395039b21629897413385a470a 100644 (file)
@@ -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;
+}
index e6062121a33ba136750599796e23171f9437a024..9dc3f1879681812b9f4d529b3209d2ee6192e85b 100644 (file)
@@ -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);
index 847aebc5169339aa5714157d4abf02f4cdb07e02..3d68dc2e0faaa3b51ed03be12269694ec3c8de46 100644 (file)
@@ -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;
 }