diff --git a/src/database.c b/src/database.c index f0b8cb6..e22289a 100644 --- a/src/database.c +++ b/src/database.c @@ -1079,6 +1079,8 @@ int apk_db_open(struct apk_database *db, struct apk_db_options *dbopts) S_ISDIR(st.st_mode) && major(st.st_dev) != 0) db->cache_dir = apk_linked_cache_dir; + apk_id_cache_init(&db->id_cache, db->root_fd); + if (dbopts->open_flags & APK_OPENF_WRITE) { db->lock_fd = openat(db->root_fd, "var/lib/apk/lock", O_CREAT | O_RDWR | O_CLOEXEC, 0400); @@ -1177,8 +1179,6 @@ int apk_db_open(struct apk_database *db, struct apk_db_options *dbopts) goto ret_r; } - apk_id_cache_init(&db->id_cache, db->root_fd); - return rr; ret_errno: diff --git a/src/io.c b/src/io.c index 38bc4e6..0f09403 100644 --- a/src/io.c +++ b/src/io.c @@ -838,7 +838,7 @@ uid_t apk_resolve_gid(struct apk_id_cache *idc, const char *groupname, uid_t def ci->genid = idc->genid; ci->gid = -1; - in = fdopen(openat(idc->root_fd, "etc/passwd", O_RDONLY|O_CLOEXEC), "r"); + in = fdopen(openat(idc->root_fd, "etc/group", O_RDONLY|O_CLOEXEC), "r"); if (in != NULL) { do { fgetgrent_r(in, &grent, buf, sizeof(buf), &grp);