From: Michael Tremer Date: Fri, 19 Aug 2022 14:53:11 +0000 (+0000) Subject: file: Verify timestamps X-Git-Tag: 0.9.28~418 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0eeac4a5f17478cbecab53584a42f41590d7b57c;p=pakfire.git file: Verify timestamps Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/file.c b/src/libpakfire/file.c index 1c5518f1d..3fbe13234 100644 --- a/src/libpakfire/file.c +++ b/src/libpakfire/file.c @@ -46,6 +46,8 @@ enum pakfire_file_verification_status { PAKFIRE_FILE_SIZE_CHANGED = (1 << 4), PAKFIRE_FILE_OWNER_CHANGED = (1 << 5), PAKFIRE_FILE_GROUP_CHANGED = (1 << 6), + PAKFIRE_FILE_CTIME_CHANGED = (1 << 7), + PAKFIRE_FILE_MTIME_CHANGED = (1 << 8), }; struct pakfire_file { @@ -613,6 +615,24 @@ static int pakfire_file_verify_ownership(struct pakfire_file* file, const struct return 0; } +static int pakfire_file_verify_timestamps(struct pakfire_file* file, const struct stat* st) { + // Check creation time + if (file->ctime != st->st_ctime) { + file->verify_status |= PAKFIRE_FILE_CTIME_CHANGED; + + DEBUG(file->pakfire, "%s: Creation time changed\n", file->path); + } + + // Check modification time + if (file->mtime != st->st_mtime) { + file->verify_status |= PAKFIRE_FILE_MTIME_CHANGED; + + DEBUG(file->pakfire, "%s: Modification time changed\n", file->path); + } + + return 0; +} + /* Verify the file - i.e. does the metadata match what is on disk? */ @@ -650,5 +670,10 @@ int pakfire_file_verify(struct pakfire_file* file, int* status) { if (r) return r; + // Verify timestamps + r = pakfire_file_verify_timestamps(file, &st); + if (r) + return r; + return 0; }