--- 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();