[devel] nfs mountd --manage-gids problem
Pavel Shilovsky
piastry на altlinux.org
Ср Июн 1 18:25:01 UTC 2011
1 июня 2011 г. 19:11 пользователь Rinat Bikov <becase на altlinux.org> написал:
> 1 июня 2011 г. 16:20 Pavel Shilovsky написал:
>> Собственно вопроса два:
>> 1) чем может быть объяснено такое странное поведение getgrouplist со
>> статик переменными (проверял его отдельно, вне кода mountd)?
> Отладил в gdb, разобрался: ngroups у вас 0 в случае использования
> static при вызове getgrouplist :).
> А это ожидаемая длинна массива :).
Спасибо, я теперь понял в чём дело! Так как groups_len в
последующих вызовах уже не 0, то ngroups не меняется из-за условия:
145 >-------if (groups_len == 0) {
146 >------->-------groups = malloc(sizeof(gid_t) * INITIAL_MANAGED_GROUPS);
147 >------->-------if (!groups)
148 >------->------->-------return;
149
150 >------->-------groups_len = ngroups = INITIAL_MANAGED_GROUPS;
151 >-------}
Видимо, можно просто наложить такой патч:
diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c
index df6b38f..8248e9c 100644
--- a/utils/mountd/cache.c
+++ b/utils/mountd/cache.c
@@ -147,9 +147,11 @@ static void auth_unix_gid(FILE *f)
if (!groups)
return;
- groups_len = ngroups = INITIAL_MANAGED_GROUPS;
+ groups_len = INITIAL_MANAGED_GROUPS;
}
+ ngroups = groups_len;
+
if (readline(fileno(f), &lbuf, &lbuflen) != 1)
return;
--
Best regards,
Pavel Shilovsky.
Подробная информация о списке рассылки Devel