diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/app_audit.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/app_audit.c b/src/app_audit.c index 694d8b5..a8be79f 100644 --- a/src/app_audit.c +++ b/src/app_audit.c @@ -128,17 +128,26 @@ static int audit_file(struct audit_ctx *actx, int dirfd, const char *name, struct apk_file_info *fi) { + int csum_type = APK_CHECKSUM_DEFAULT; + int xattr_csum_type = APK_CHECKSUM_DEFAULT; int rv = 0; - if (!dbf) return 'A'; + if (dbf) { + csum_type = dbf->csum.type; + xattr_csum_type = dbf->acl->xattr_csum.type ?: APK_CHECKSUM_DEFAULT; + } else { + if (!actx->details) return 'A'; + } if (apk_fileinfo_get(dirfd, name, APK_FI_NOFOLLOW | - APK_FI_XATTR_CSUM(dbf->acl->xattr_csum.type ?: APK_CHECKSUM_DEFAULT) | - APK_FI_CSUM(dbf->csum.type), + APK_FI_XATTR_CSUM(xattr_csum_type) | + APK_FI_CSUM(csum_type), fi, &db->atoms) != 0) return 'e'; + if (!dbf) return 'A'; + if (dbf->csum.type != APK_CHECKSUM_NONE && apk_checksum_compare(&fi->csum, &dbf->csum) != 0) rv = 'U'; |