ignore .apk-new files for overlays

cute-signatures
Timo Teräs 2015-04-08 11:08:16 +03:00
parent 941fc1b10c
commit 23d0a2244a
3 changed files with 12 additions and 1 deletions

View File

@ -95,6 +95,7 @@ apk_blob_t apk_blob_pushed(apk_blob_t buffer, apk_blob_t left);
unsigned long apk_blob_hash_seed(apk_blob_t, unsigned long seed);
unsigned long apk_blob_hash(apk_blob_t str);
int apk_blob_compare(apk_blob_t a, apk_blob_t b);
int apk_blob_ends_with(apk_blob_t str, apk_blob_t suffix);
int apk_blob_for_each_segment(apk_blob_t blob, const char *split,
apk_blob_cb cb, void *ctx);

View File

@ -111,7 +111,7 @@ static int audit_file(struct audit_ctx *actx,
apk_checksum_compare(&fi.csum, &dbf->csum) != 0)
rv = 'U';
else if (apk_checksum_compare(&fi.xattr_csum, &dbf->acl->xattr_csum) != 0)
rv = 'X';
rv = 'x';
else if (S_ISLNK(fi.mode) && dbf->csum.type == APK_CHECKSUM_NONE)
rv = 'U';
else if (actx->check_permissions) {
@ -260,6 +260,10 @@ recurse_check:
if (actx->mode == MODE_SYSTEM &&
(reason == 'A' || protect_mode != APK_PROTECT_NONE))
goto done;
if (actx->mode == MODE_BACKUP &&
reason == 'A' &&
apk_blob_ends_with(bent, APK_BLOB_STR(".apk-new")))
goto done;
report_audit(actx, reason, bfull, dbf ? dbf->diri->pkg : NULL);
}

View File

@ -225,6 +225,12 @@ int apk_blob_compare(apk_blob_t a, apk_blob_t b)
return 1;
}
int apk_blob_ends_with(apk_blob_t a, apk_blob_t b)
{
if (a.len < b.len) return 0;
return memcmp(a.ptr+a.len-b.len, b.ptr, b.len) == 0;
}
int apk_blob_for_each_segment(apk_blob_t blob, const char *split,
int (*cb)(void *ctx, apk_blob_t blob), void *ctx)
{