pacman: correct length of ".files.sig" string

Running "pacman -Sc" deletes /var/lib/pacman/sync/*.files.sig due to a
wrong string length being used when checking filename suffixes in that
directory. In turn, these missing signature files cause both the
corresponding "*.files" files and their signatures being forcibly
re-downloaded again when "pacman -Sy" is executed.

Since official Arch Linux repos don't use signed database files yet, this
only affects people who use custom repos with signed database files, for
which they have set the "SigLevel" directive to "Required" or
"DatabaseRequired" in /etc/pacman.conf.

Fixes FS#66472

Signed-off-by: Pascal Ernster <pacman-dev@hardfalcon.net>
Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
Pascal Ernster 2021-01-21 03:49:58 +01:00 committed by Allan McRae
parent 1c4e079899
commit 05aefb8f82

View file

@ -105,7 +105,7 @@ static int sync_cleandb(const char *dbpath)
dbname = strndup(dname, len - 7);
} else if(len > 6 && strcmp(dname + len - 6, ".files") == 0) {
dbname = strndup(dname, len - 6);
} else if(len > 6 && strcmp(dname + len - 6, ".files.sig") == 0) {
} else if(len > 10 && strcmp(dname + len - 10, ".files.sig") == 0) {
dbname = strndup(dname, len - 10);
} else {
ret += unlink_verbose(path, 0);