rev 3926 - in trunk/packages: kdebase/debian/patches kdemultimedia/debian/patches kdenetwork/debian/patches

Christopher Martin chrsmrtn at costa.debian.org
Fri Jun 9 15:46:03 UTC 2006


Author: chrsmrtn
Date: 2006-06-09 15:46:01 +0000 (Fri, 09 Jun 2006)
New Revision: 3926

Added:
   trunk/packages/kdebase/debian/patches/29_return_value_checks.diff
   trunk/packages/kdemultimedia/debian/patches/10_return_value_checks.diff
   trunk/packages/kdenetwork/debian/patches/15_return_value_checks.diff
Log:
Return value check patches from kde-packager
(no embargo, since not exploitable; but still nice to have).

kdelibs has similar patches in its branch, so next upload should
get them.

These may also be checked into the branch, so these patches
may be short-lived.


Added: trunk/packages/kdebase/debian/patches/29_return_value_checks.diff
===================================================================
--- trunk/packages/kdebase/debian/patches/29_return_value_checks.diff	2006-06-09 14:30:43 UTC (rev 3925)
+++ trunk/packages/kdebase/debian/patches/29_return_value_checks.diff	2006-06-09 15:46:01 UTC (rev 3926)
@@ -0,0 +1,71 @@
+--- kde.orig/ksysguard/ksysguardd/ksysguardd.c
++++ kde.patched/ksysguard/ksysguardd/ksysguardd.c
+@@ -207,15 +207,19 @@
+ {
+   struct passwd *pwd;
+ 
+-  if ( ( pwd = getpwnam( "nobody" ) ) != NULL )
+-    setuid( pwd->pw_uid );
+-	else {
++  if ( ( pwd = getpwnam( "nobody" ) ) != NULL ) {
++    if ( !setgid(pwd->pw_gid) )
++      setuid(pwd->pw_uid);
++    if (!geteuid() && getuid() != pwd->pw_uid)
++      _exit(1);
++  }
++  else {
+     log_error( "User 'nobody' does not exist." );
+     /**
+       We exit here to avoid becoming vulnerable just because
+       user nobody does not exist.
+      */
+-    exit( 1 );
++    _exit(1);
+   }
+ }
+ 
+@@ -231,7 +235,7 @@
+       chdir( "/" );
+       umask( 0 );
+       if ( createLockFile() < 0 )
+-        exit( 1 );
++        _exit( 1 );
+ 
+       dropPrivileges();
+       installSignalHandler();
+--- kde.orig/drkonqi/main.cpp
++++ kde.patched/drkonqi/main.cpp
+@@ -61,7 +61,8 @@
+ {
+   // Drop privs.
+   setgid(getgid());
+-  setuid(getuid());
++  if (setuid(getuid()) < 0 && geteuid() != getuid())
++     exit (255);
+ 
+   // Make sure that DrKonqi doesn't start DrKonqi when it crashes :-]
+   setenv("KDE_DEBUG", "true", 1);
+--- kde.orig/kdm/kfrontend/kgreeter.cpp
++++ kde.patched/kdm/kfrontend/kgreeter.cpp
+@@ -251,7 +251,12 @@
+ 	// XXX remove seteuid-voodoo when we run as nobody
+ 	if (!(ps = getpwnam( "nobody" )))
+ 		return;
+-	seteuid( ps->pw_uid );
++        if (setegid( ps->pw_gid )) 
++                return;
++        if (seteuid( ps->pw_uid )) {
++                setegid(0);
++                return;
++        }
+ 
+ 	QImage default_pix;
+ 	if (userView) {
+@@ -318,6 +323,7 @@
+ 
+ 	// XXX remove seteuid-voodoo when we run as nobody
+ 	seteuid( 0 );
++        setegid( 0 );
+ }
+ 
+ void

Added: trunk/packages/kdemultimedia/debian/patches/10_return_value_checks.diff
===================================================================
--- trunk/packages/kdemultimedia/debian/patches/10_return_value_checks.diff	2006-06-09 14:30:43 UTC (rev 3925)
+++ trunk/packages/kdemultimedia/debian/patches/10_return_value_checks.diff	2006-06-09 15:46:01 UTC (rev 3926)
@@ -0,0 +1,26 @@
+--- kde.orig/kscd/cddaslave.c
++++ kde.patched/kscd/cddaslave.c
+@@ -418,7 +418,10 @@
+ 	 * superuser access.
+ 	 */
+ 	nice(-14);
++	setgid(getgid());
+ 	setuid(getuid());
++	if (getuid() != geteuid())
++		return 255;
+ 
+ 	FD_ZERO(&dummyfd);
+ 	FD_ZERO(&readfd);
+--- kde.orig/kscd/libwm/cddaslave.c
++++ kde.patched/kscd/libwm/cddaslave.c
+@@ -489,7 +489,10 @@
+    * superuser access.
+    */
+   nice(-14);
++  setgid(getgid());
+   setuid(getuid());
++  if (geteuid() != getuid())
++    return 255;
+ 
+   FD_ZERO(&dummyfd);
+   FD_ZERO(&readfd);

Added: trunk/packages/kdenetwork/debian/patches/15_return_value_checks.diff
===================================================================
--- trunk/packages/kdenetwork/debian/patches/15_return_value_checks.diff	2006-06-09 14:30:43 UTC (rev 3925)
+++ trunk/packages/kdenetwork/debian/patches/15_return_value_checks.diff	2006-06-09 15:46:01 UTC (rev 3926)
@@ -0,0 +1,80 @@
+--- kde.orig/kppp/accounts.cpp
++++ kde.patched/kppp/accounts.cpp
+@@ -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 @@
+ 
+     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);
+     }
+--- kde.orig/kppp/main.cpp
++++ kde.patched/kppp/main.cpp
+@@ -177,8 +177,15 @@
+ 
+   // 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.
+--- kde.orig/lanbrowsing/lisa/netscanner.cpp
++++ kde.patched/lanbrowsing/lisa/netscanner.cpp
+@@ -471,17 +471,6 @@
+    MyString dummy("");
+    mdcerr<<"pingScan: m_maxPings: "<<m_maxPings<<std::endl;
+ 
+-/*   int bufferSize(60*1024);
+-   mdcerr<<"NetScanner::pingScan: regaining root privileges for setting up the icmp socket"<<std::endl;
+-   seteuid(0);
+-   int sockFD=socket(AF_INET,SOCK_RAW,IPPROTO_ICMP);
+-   mdcerr<<"NetScanner::pingScan: setsockopt returns "<<setsockopt(sockFD,SOL_SOCKET,SO_RCVBUF,&bufferSize,sizeof(bufferSize))<<std::endl;
+-   //make the socket non-blocking
+-   //long int options = O_NONBLOCK | ::fcntl(sockFD, F_GETFL);
+-   //mdcerr<<"NetScanner::pingScan:: made it non blocking: "<<::fcntl(sockFD, F_SETFL, options )<<std::endl;
+-   seteuid(getuid());
+-   mdcerr<<"NetScanner::pingScan: dropped root privileges again"<<std::endl;*/
+-
+    pid_t pid=getpid();
+    ICMPEchoRequest echo;
+    echo.type=ICMP_ECHO;
+--- kde.orig/lanbrowsing/lisa/main.cpp
++++ kde.patched/lanbrowsing/lisa/main.cpp
+@@ -257,8 +257,12 @@
+    //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();




More information about the pkg-kde-commits mailing list