--- kdenetwork-3.4.2/ktalkd/ktalkd/talkd.cpp 2005-05-23 08:08:13.000000000 -0400 +++ kdenetwork-3.4.2-new/ktalkd/ktalkd/talkd.cpp 2005-09-17 16:01:46.000000000 -0400 @@ -183,7 +183,7 @@ struct hostent *hp; struct sockaddr_in sn; int cc, i, ok; - socklen_t addrlen; + kde_socklen_t addrlen; int ret_value = PROC_REQ_OK; /* return value from process_request */ addrlen = sizeof(sn); @@ -347,7 +347,7 @@ main(int argc, char *argv[]) { struct sockaddr_in sn; - socklen_t sz = sizeof(sn); + kde_socklen_t sz = sizeof(sn); int do_debug=0, do_badpackets=0, ch; new KInstance("ktalkd"); // for KConfig and friends --- kdenetwork-3.4.2/lanbrowsing/lisa/netmanager.cpp 2005-05-23 08:07:29.000000000 -0400 +++ kdenetwork-3.4.2-new/lanbrowsing/lisa/netmanager.cpp 2005-09-17 16:01:46.000000000 -0400 @@ -413,7 +413,7 @@ { mdcerr<<"NetManager::run: on m_listenFD"< #include +#include + #include "pppdata.h" #include "accounts.h" #include "accounting.h" @@ -211,8 +213,12 @@ void AccountWidget::viewLogClicked(){ QApplication::flushX(); if(fork() == 0) { - setgid(getgid()); + if (setgid(getgid()) < 0 && errno != EPERM) + _exit(2); setuid(getuid()); + if( geteuid() != getuid() ) + _exit(1); + // TODO: use execvp system("kppplogview -kppp"); _exit(0); } --- kdenetwork/kppp/main.cpp (revision 549512) +++ kdenetwork/kppp/main.cpp (working copy) @@ -177,8 +177,15 @@ int main( int argc, char **argv ) { // drop setuid status euid = geteuid(); - setgid(getgid()); + if (setgid(getgid()) < 0 && errno != EPERM) { + perror("setgid() failed"); + exit(1); + } setuid(getuid()); + if (geteuid() != getuid()) { + perror("setuid() failed"); + exit(1); + } // // end of setuid-dropping block. --- kdenetwork/lanbrowsing/lisa/main.cpp (revision 549512) +++ kdenetwork/lanbrowsing/lisa/main.cpp (working copy) @@ -257,8 +257,12 @@ int main(int argc, char** argv) //for creating a raw socket //now dropping root privileges once and ever - setuid(getuid()); + + setuid(getuid()); + if (geteuid() != getuid()) + _exit(255); + //according to R. Stevens the following three lines //make daemons feel good :) setsid();