summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/app_audit.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/app_audit.c b/src/app_audit.c
index a4e81d9..2ef0bb2 100644
--- a/src/app_audit.c
+++ b/src/app_audit.c
@@ -130,17 +130,26 @@ static int audit_file(struct audit_ctx *actx,
int dirfd, const char *name,
struct apk_file_info *fi)
{
+ int digest_type = APK_DIGEST_SHA256;
+ int xattr_csum_type = APK_CHECKSUM_DEFAULT;
int rv = 0;
- if (!dbf) return 'A';
+ if (dbf) {
+ digest_type = apk_dbf_digest(dbf);
+ 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_DIGEST(apk_dbf_digest(dbf)),
+ APK_FI_XATTR_CSUM(xattr_csum_type) |
+ APK_FI_DIGEST(digest_type),
fi, &db->atoms) != 0)
return 'e';
+ if (!dbf) return 'A';
+
if (dbf->csum.type != APK_CHECKSUM_NONE &&
apk_digest_cmp_csum(&fi->digest, &dbf->csum) != 0)
rv = 'U';