--- 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"<<std::endl; struct sockaddr_in clientAddress; - socklen_t clilen(sizeof(clientAddress)); + kde_socklen_t clilen(sizeof(clientAddress)); // bzero((char*)&clientAddress, clilen); memset((void*)&clientAddress,0,sizeof(clientAddress)); int connectionFD=::accept(m_listenFD,(struct sockaddr *) &clientAddress, &clilen); @@ -501,7 +501,7 @@ mdcerr<<"NetManager::answerBroadcast: received BC"<<std::endl; struct sockaddr_in sAddr; - socklen_t length(sizeof(sockaddr_in)); + kde_socklen_t length(sizeof(sockaddr_in)); char buf[1024]; int result=recvfrom(m_bcFD, (char*)buf, 1024, 0, (sockaddr*)&sAddr,&length); mdcerr<<"NetManager::answerBroadcast: received successfully"<<std::endl; @@ -936,7 +936,7 @@ sAddr.sin_addr.s_addr=m_broadcastAddress; sAddr.sin_family=AF_INET; sAddr.sin_port=htons(m_basePort); - socklen_t length(sizeof(sockaddr_in)); + kde_socklen_t length(sizeof(sockaddr_in)); mdcerr<<" NetManager::findServerServer: broadcasting to: " <<std::ios::hex<<m_broadcastAddress<<std::ios::dec<<std::endl; --- kdenetwork-3.4.2/lanbrowsing/lisa/netscanner.cpp 2005-05-23 08:07:29.000000000 -0400 +++ kdenetwork-3.4.2-new/lanbrowsing/lisa/netscanner.cpp 2005-09-17 16:01:46.000000000 -0400 @@ -561,7 +561,7 @@ select(0,0,0,0,&tv1); //now read the answers, hopefully struct sockaddr_in fromAddr; - socklen_t length(sizeof(fromAddr)); + kde_socklen_t length(sizeof(fromAddr)); int received(0); fd_set sockFDset; --- kdenetwork/kppp/accounts.cpp (revision 549512) +++ kdenetwork/kppp/accounts.cpp (working copy) @@ -41,6 +41,8 @@ #include <kstdguiitem.h> #include <qvgroupbox.h> +#include <errno.h> + #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();