From 63a6756a6b47ff1f905601253d3736748b9090c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Motiejus=20Jak=C5=A1tys?= Date: Thu, 14 Jul 2022 19:58:05 +0300 Subject: [PATCH] fix initgroups_dyn --- src/libnss.zig | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/libnss.zig b/src/libnss.zig index 6088864..e4b2464 100644 --- a/src/libnss.zig +++ b/src/libnss.zig @@ -11,6 +11,7 @@ const Allocator = mem.Allocator; const DB = @import("DB.zig"); const File = @import("File.zig"); const ErrCtx = @import("ErrCtx.zig"); +const compress = @import("compress.zig"); const CGroup = @import("Group.zig").CGroup; const PackedGroup = @import("PackedGroup.zig"); const CUser = @import("User.zig").CUser; @@ -476,8 +477,13 @@ fn initgroups_dyn( return c.NSS_STATUS_NOTFOUND; }; - var gids = db.userGids(user.additional_gids_offset); - if (size.* < gids.remaining()) { + // TODO: use db.userGids() + const offset = user.additional_gids_offset; + var vit = compress.varintSliceIteratorMust(db.additional_gids[offset..]); + const remaining = vit.remaining; + + var gids = compress.deltaDecompressionIterator(&vit); + if (size.* < remaining) { const oldsize = @intCast(usize, size.*); const newsize = if (limit <= 0) oldsize + gids.remaining()