libalpm: Force update when database is marked as corrupted.

When a database and its signature is updated non-atomically on a server,
there is a window where a user may update the database but grab the old
signature.  The database is marked as invalid by libalpm, which can be
fixed by forcing a refresh (assuming the server has caught up and the
user realizes what has happened) or with a future update of the repo.
Work around this by forcing a repository refresh whenever a database is
invalid.

Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
Sebastian Lackner 2015-07-04 18:39:42 +02:00 committed by Allan McRae
parent ae97082e98
commit 5780350751
1 changed files with 5 additions and 0 deletions

View File

@ -198,6 +198,11 @@ int SYMEXPORT alpm_db_update(int force, alpm_db_t *db)
return -1;
}
/* force update of invalid databases to fix potential mismatched database/signature */
if(db->status & DB_STATUS_INVALID) {
force = 1;
}
/* make sure we have a sane umask */
oldmask = umask(0022);