From 52fcbf9fceb7b4fc9a5a8a94352e58496591771f Mon Sep 17 00:00:00 2001 From: tpearson Date: Sat, 2 Oct 2010 03:00:23 +0000 Subject: [CRITICAL] Repair KDM user list with LDAP git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebase@1181776 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- kdm/kfrontend/kgreeter.cpp | 65 ++++++++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 31 deletions(-) (limited to 'kdm/kfrontend/kgreeter.cpp') diff --git a/kdm/kfrontend/kgreeter.cpp b/kdm/kfrontend/kgreeter.cpp index fb3a3aacc..bd2e2651a 100644 --- a/kdm/kfrontend/kgreeter.cpp +++ b/kdm/kfrontend/kgreeter.cpp @@ -400,7 +400,7 @@ KGreeter::insertUsers(int limit_users) } if (_showUsers == SHOW_ALL) { UserList noUsers( _noUsers ); - TQDict dupes( 1000 ); + TQDict dupes( 1000 ); // Potential crash risk with buffer overrun? TQStringList toinsert; int count = 0; for (setpwent(); (ps = getpwent()) != 0;) { @@ -421,36 +421,39 @@ KGreeter::insertUsers(int limit_users) } } } - if ( limit_users >= 0 && ++count > limit_users ) { - utmpname( _PATH_WTMP ); - setutxent(); - toinsert = TQStringList(); - dupes.clear(); - - for ( count = 0; count < limit_users; ) { - struct utmpx * ent = getutxent(); - if ( !ent ) - break; - struct passwd *ps = getpwnam( ent->ut_user ); - if (ps && *ps->pw_dir && *ps->pw_shell && - (ps->pw_uid >= (unsigned)_lowUserId || - !ps->pw_uid && _showRoot) && - ps->pw_uid <= (unsigned)_highUserId && - !noUsers.hasUser( ps->pw_name ) && - !noUsers.hasGroup( ps->pw_gid )) - { - TQString username( TQFile::decodeName( ent->ut_user ) ); - if (!dupes.find( username )) { - dupes.insert( username, (int *)-1 ); - toinsert.append( username ); - count++; - } - } - - - } - endutxent(); - } + // FIXME: OpenSUSE added this code + // For some reason it does not allow LDAP users to be listed (!), + // therefore it was deactivated. It should be repaired and reactivated. +// if ( limit_users >= 0 && ++count > limit_users ) { +// utmpname( _PATH_WTMP ); +// setutxent(); +// toinsert = TQStringList(); +// dupes.clear(); +// +// for ( count = 0; count < limit_users; ) { +// struct utmpx * ent = getutxent(); +// if ( !ent ) +// break; +// struct passwd *ps = getpwnam( ent->ut_user ); +// if (ps && *ps->pw_dir && *ps->pw_shell && +// (ps->pw_uid >= (unsigned)_lowUserId || +// !ps->pw_uid && _showRoot) && +// ps->pw_uid <= (unsigned)_highUserId && +// !noUsers.hasUser( ps->pw_name ) && +// !noUsers.hasGroup( ps->pw_gid )) +// { +// TQString username( TQFile::decodeName( ent->ut_user ) ); +// if (!dupes.find( username )) { +// dupes.insert( username, (int *)-1 ); +// toinsert.append( username ); +// count++; +// } +// } +// +// +// } +// endutxent(); +// } for ( TQStringList::ConstIterator it = toinsert.begin(); it != toinsert.end(); ++it ) -- cgit v1.2.1