1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2025-01-11 05:17:44 +03:00

copy: move sync_rights() to copy.c and rename copy_rights()

It's so similar to copy_access(), hence let's move it over and rename it
in similar style to the rest of the functions.

No change in behaviour, just moving things over.
This commit is contained in:
Lennart Poettering 2021-03-04 18:52:10 +01:00 committed by Luca Boccassi
parent e1aec57dd1
commit bb72c43485
6 changed files with 23 additions and 17 deletions

View File

@ -1232,6 +1232,8 @@ int copy_access(int fdf, int fdt) {
assert(fdf >= 0);
assert(fdt >= 0);
/* Copies just the access mode (and not the ownership) from fdf to fdt */
if (fstat(fdf, &st) < 0)
return -errno;
@ -1241,6 +1243,20 @@ int copy_access(int fdf, int fdt) {
return 0;
}
int copy_rights(int fdf, int fdt) {
struct stat st;
assert(fdf >= 0);
assert(fdt >= 0);
/* Copies both access mode and ownership from fdf to fdt */
if (fstat(fdf, &st) < 0)
return -errno;
return fchmod_and_chown(fdt, st.st_mode & 07777, st.st_uid, st.st_gid);
}
int copy_xattr(int fdf, int fdt) {
_cleanup_free_ char *names = NULL;
int ret = 0, r;

View File

@ -64,4 +64,5 @@ static inline int copy_bytes(int fdf, int fdt, uint64_t max_bytes, CopyFlags cop
int copy_times(int fdf, int fdt, CopyFlags flags);
int copy_access(int fdf, int fdt);
int copy_rights(int fdf, int fdt);
int copy_xattr(int fdf, int fdt);

View File

@ -1327,15 +1327,6 @@ int warn_file_is_world_accessible(const char *filename, struct stat *st, const c
return 0;
}
int sync_rights(int from, int to) {
struct stat st;
if (fstat(from, &st) < 0)
return -errno;
return fchmod_and_chown(to, st.st_mode & 07777, st.st_uid, st.st_gid);
}
int rename_and_apply_smack_floor_label(const char *from, const char *to) {
int r = 0;
if (rename(from, to) < 0)

View File

@ -118,6 +118,4 @@ 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(int from, int to);
int rename_and_apply_smack_floor_label(const char *temp_path, const char *dest_path);

View File

@ -675,7 +675,7 @@ static int write_root_passwd(const char *passwd_path, const char *password, cons
if (original) {
struct passwd *i;
r = sync_rights(fileno(original), fileno(passwd));
r = copy_rights(fileno(original), fileno(passwd));
if (r < 0)
return r;
@ -743,7 +743,7 @@ static int write_root_shadow(const char *shadow_path, const char *hashed_passwor
if (original) {
struct spwd *i;
r = sync_rights(fileno(original), fileno(shadow));
r = copy_rights(fileno(original), fileno(shadow));
if (r < 0)
return r;

View File

@ -393,7 +393,7 @@ static int write_temporary_passwd(const char *passwd_path, FILE **tmpfile, char
original = fopen(passwd_path, "re");
if (original) {
r = sync_rights(fileno(original), fileno(passwd));
r = copy_rights(fileno(original), fileno(passwd));
if (r < 0)
return r;
@ -494,7 +494,7 @@ static int write_temporary_shadow(const char *shadow_path, FILE **tmpfile, char
original = fopen(shadow_path, "re");
if (original) {
r = sync_rights(fileno(original), fileno(shadow));
r = copy_rights(fileno(original), fileno(shadow));
if (r < 0)
return r;
@ -590,7 +590,7 @@ static int write_temporary_group(const char *group_path, FILE **tmpfile, char **
original = fopen(group_path, "re");
if (original) {
r = sync_rights(fileno(original), fileno(group));
r = copy_rights(fileno(original), fileno(group));
if (r < 0)
return r;
@ -688,7 +688,7 @@ static int write_temporary_gshadow(const char * gshadow_path, FILE **tmpfile, ch
if (original) {
struct sgrp *sg;
r = sync_rights(fileno(original), fileno(gshadow));
r = copy_rights(fileno(original), fileno(gshadow));
if (r < 0)
return r;