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) {
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);
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;
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;
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;
if (original) {
struct sgrp *sg;
- r = sync_rights(original, gshadow_tmp);
+ r = sync_rights(fileno(original), fileno(gshadow));
if (r < 0)
return r;