From 37b65f1c010bb98934448c726e26c64584d98e28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Ter=C3=A4s?= Date: Mon, 1 Jun 2015 11:21:46 +0300 Subject: fix directory permissions loading commit 941fc1b1 uncovered a bug that directory permissions are not updated properly at db load time if it's the default acl. --- src/audit.c | 2 +- src/database.c | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/audit.c b/src/audit.c index 0e57a611e6..4312fd7fbc 100644 --- a/src/audit.c +++ b/src/audit.c @@ -137,7 +137,7 @@ static int audit_directory(struct audit_ctx *actx, return actx->recursive ? 'd' : 'D'; if (actx->check_permissions && - (dbd->mode != 0 || dbd->uid != 0 || dbd->gid != 0)) { + ((dbd->mode & ~S_SEENFLAG) || dbd->uid || dbd->gid)) { if ((fi->mode & 07777) != (dbd->mode & 07777)) return 'm'; if (fi->uid != dbd->uid || fi->gid != dbd->gid) diff --git a/src/database.c b/src/database.c index c814957f57..478016bb8a 100644 --- a/src/database.c +++ b/src/database.c @@ -758,6 +758,8 @@ int apk_db_index_read(struct apk_database *db, struct apk_bstream *bs, int repo) if (pkg == NULL) continue; + if (diri) apk_db_dir_apply_diri_permissions(diri); + if (repo >= 0) { pkg->repos |= BIT(repo); } else if (repo == -2) { @@ -806,6 +808,7 @@ int apk_db_index_read(struct apk_database *db, struct apk_bstream *bs, int repo) /* Check FDB special entries */ switch (field) { case 'F': + if (diri) apk_db_dir_apply_diri_permissions(diri); if (pkg->name == NULL) goto bad_entry; diri = apk_db_diri_new(db, pkg, l, &diri_node); file_diri_node = &diri->owned_files.first; @@ -826,7 +829,7 @@ int apk_db_index_read(struct apk_database *db, struct apk_bstream *bs, int repo) acl = apk_db_acl_atomize(mode, uid, gid, &xattr_csum); if (field == 'M') - apk_db_diri_set(diri, acl); + diri->acl = acl; else file->acl = acl; break; -- cgit v1.2.3