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
parent
4dd183f3c1
commit
98de535355
|
@ -344,8 +344,14 @@ int apk_archive_entry_extract(int atfd, const struct apk_file_info *ae,
|
||||||
(ae->link_target != NULL)) {
|
(ae->link_target != NULL)) {
|
||||||
/* non-standard entries need to be deleted first */
|
/* non-standard entries need to be deleted first */
|
||||||
if (apk_flags & APK_NEVER_OVERWRITE) {
|
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;
|
return 0;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
unlinkat(atfd, fn, 0);
|
unlinkat(atfd, fn, 0);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue