On Tue, Jun 06, 2006 at 06:10:44PM +0200, Marcin Król wrote: > Hello. > > Przy okazji debugowania bledu w obsludze grup w nss_ldap natknalem sie > na taki sam blad w PAM. Dla przykladu posluze sie modulem pam_limits. > Otoz jest sobie system z ustawionymi limitami w > /etc/security/limits.conf. Limity owe sa na grupy grupax, grupay, grupaz > gdzie grupax ma 7 czlonkow, grypay kilkudziesieciu, a grupaz kilka > tysiecy. PAM przelatujac odwolanie do pam_limits dochodzi w kodzie do > wywloania _pammodutil_getgrnam() znajdujacego sie w > modules/pammodutil/modutil_getgrnam.c:41. Wszystko dziala pieknie dla > wszystkich trzech grup jezeli nie jest zdefiniowane HAVE_GETGRNAM_R. > Jezeli natomiast uzywane jest getgrnam_r to wszystko pieknie zadziala > dla grupax i grupay, a nie zadziala dla grupaz. Powod: wywolanie > getgrnam_r (modutil_getgrnam.c:68) zwroci blad i ustawi errno na > "Numerical result out of range" - z testow mi wyszlo ze bufor podany w > parametrach wywolania byl za maly na pomieszczenie informacji o grupie > grupaz. Konczy sie to tym, ze dla duzych grup limity systemowe narzucane > przez PAM przy logowaniu itp mozna sobie w 4 litery wsadzic. > > Jezeli jakis magik mialby pomysl jak to poprawic to bylbym niezmiernie > wdzieczny, bo przekompilowywanie PAM z wymuszeniem uzycia getgrnam() > jest bezsensowne.
Ta funkcja próbuje zwiększać bufor aż do PWD_ABSURD_PWD_LENGTH. To jest zdefiniowane na 32kB - może za mało? Z kolei manual jako maksymalny rozmiar bufora podaje getconf(_SC_GETGR_R_SIZE_MAX), ale to jakaś bzdura (dla polecenia getconf ta zmienna nazywa się inaczej): $ getconf NSS_BUFLEN_GROUP 1024 Oficjalna dokumentacja (czyli info) nie podaje maksymalnego rozmiaru bufora, ale w źródłach glibca 2.3.6 są pozostałości po tym 1024 (włącznie z nscd - tu mogą być problemy z długą listą członków!). -- Jakub Bogusz http://qboosh.cs.net.pl/ _______________________________________________ pld-devel-pl mailing list [email protected] http://lists.pld-linux.org/mailman/listinfo/pld-devel-pl
