useradd: Do not reset non-existent data in {last,fail}log
useradd does not create the files if they don't exist, but if they exist it will reset user data even if the data did not exist before creating a hole and an explicitly zero'd data point resulting (especially for high UIDs) in a lot of zeros ending up in containers and tarballs.
This commit is contained in:
parent
7136e24f8a
commit
ebf9b232b0
@ -1996,8 +1996,9 @@ static void faillog_reset (uid_t uid)
|
|||||||
struct faillog fl;
|
struct faillog fl;
|
||||||
int fd;
|
int fd;
|
||||||
off_t offset_uid = (off_t) (sizeof fl) * uid;
|
off_t offset_uid = (off_t) (sizeof fl) * uid;
|
||||||
|
struct stat st;
|
||||||
|
|
||||||
if (access (FAILLOG_FILE, F_OK) != 0) {
|
if (stat (FAILLOG_FILE, &st) != 0 || st.st_size <= offset_uid) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2033,8 +2034,9 @@ static void lastlog_reset (uid_t uid)
|
|||||||
int fd;
|
int fd;
|
||||||
off_t offset_uid = (off_t) (sizeof ll) * uid;
|
off_t offset_uid = (off_t) (sizeof ll) * uid;
|
||||||
uid_t max_uid;
|
uid_t max_uid;
|
||||||
|
struct stat st;
|
||||||
|
|
||||||
if (access (LASTLOG_FILE, F_OK) != 0) {
|
if (stat (LASTLOG_FILE, &st) != 0 || st.st_size <= offset_uid) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user