]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
fileio: Refactor sync_rights to take fds as arguments
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Tue, 26 May 2020 18:00:45 +0000 (20:00 +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 ccdbfe895f71f4395039b21629897413385a470a..6abe5417a6d673116eb760b5e88f7d639bd80349 100644 (file)
@@ -1188,13 +1188,13 @@ int warn_file_is_world_accessible(const char *filename, struct stat *st, const c
         return 0;
 }
 
-int sync_rights(FILE *from, const char *to) {
+int sync_rights(int from, int to) {
         struct stat st;
 
-        if (fstat(fileno(from), &st) < 0)
+        if (fstat(from, &st) < 0)
                 return -errno;
 
-        return chmod_and_chown_unsafe(to, st.st_mode & 07777, st.st_uid, st.st_gid);
+        return fchmod_and_chown(to, st.st_mode & 07777, st.st_uid, st.st_gid);
 }
 
 int rename_and_apply_smack(const char *from, const char *to) {
index 9dc3f1879681812b9f4d529b3209d2ee6192e85b..03678d827a7038c1214f40a075e2a634791f2c9b 100644 (file)
@@ -107,6 +107,6 @@ 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 sync_rights(int from, int to);
 
 int rename_and_apply_smack(const char *temp_path, const char *dest_path);
index 3d68dc2e0faaa3b51ed03be12269694ec3c8de46..2cb81721033b96468cc1b2e6ed335e02aabebdff 100644 (file)
@@ -367,7 +367,7 @@ static int write_temporary_passwd(const char *passwd_path, FILE **tmpfile, char
         original = fopen(passwd_path, "re");
         if (original) {
 
-                r = sync_rights(original, passwd_tmp);
+                r = sync_rights(fileno(original), fileno(passwd));
                 if (r < 0)
                         return r;
 
@@ -469,7 +469,7 @@ static int write_temporary_shadow(const char *shadow_path, FILE **tmpfile, char
         original = fopen(shadow_path, "re");
         if (original) {
 
-                r = sync_rights(original, shadow_tmp);
+                r = sync_rights(fileno(original), fileno(shadow));
                 if (r < 0)
                         return r;
 
@@ -566,7 +566,7 @@ static int write_temporary_group(const char *group_path, FILE **tmpfile, char **
         original = fopen(group_path, "re");
         if (original) {
 
-                r = sync_rights(original, group_tmp);
+                r = sync_rights(fileno(original), fileno(group));
                 if (r < 0)
                         return r;
 
@@ -665,7 +665,7 @@ static int write_temporary_gshadow(const char * gshadow_path, FILE **tmpfile, ch
         if (original) {
                 struct sgrp *sg;
 
-                r = sync_rights(original, gshadow_tmp);
+                r = sync_rights(fileno(original), fileno(gshadow));
                 if (r < 0)
                         return r;