archive: overwrite protection needs to use real filename

otherwise we always extract the file as .apk-new and the database
side just overwrites.
cute-signatures
Timo Teras 2009-11-06 16:16:49 +02:00
parent 4dd183f3c1
commit 98de535355
1 changed files with 7 additions and 1 deletions

View File

@ -344,8 +344,14 @@ int apk_archive_entry_extract(int atfd, const struct apk_file_info *ae,
(ae->link_target != NULL)) {
/* non-standard entries need to be deleted first */
if (apk_flags & APK_NEVER_OVERWRITE) {
if (faccessat(atfd, fn, F_OK, AT_SYMLINK_NOFOLLOW) == 0)
if (faccessat(atfd, ae->name, F_OK,
AT_SYMLINK_NOFOLLOW) == 0) {
/* destination exists, but we are not supposed
* to overwrite, just clean the temp file */
if (suffix != NULL)
unlinkat(atfd, fn, 0);
return 0;
}
} else {
unlinkat(atfd, fn, 0);
}