SOURCES: kdebase-branch.diff - more fixes

arekm arekm at pld-linux.org
Fri Jun 9 17:18:01 CEST 2006


Author: arekm                        Date: Fri Jun  9 15:18:01 2006 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- more fixes

---- Files affected:
SOURCES:
   kdebase-branch.diff (1.29 -> 1.30) 

---- Diffs:

================================================================
Index: SOURCES/kdebase-branch.diff
diff -u SOURCES/kdebase-branch.diff:1.29 SOURCES/kdebase-branch.diff:1.30
--- SOURCES/kdebase-branch.diff:1.29	Fri Jun  9 17:15:58 2006
+++ SOURCES/kdebase-branch.diff	Fri Jun  9 17:17:56 2006
@@ -5871,3 +5871,78 @@
  	if (pipe( pfd ))
  		return GE_Error;
  	if ((pid = Fork()) < 0) {
+Index: ksysguard/ksysguardd/ksysguardd.c
+===================================================================
+--- ksysguard/ksysguardd/ksysguardd.c	(revision 549512)
++++ ksysguard/ksysguardd/ksysguardd.c	(working copy)
+@@ -207,15 +207,19 @@ static void dropPrivileges( void )
+ {
+   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 @@ void makeDaemon( void )
+       chdir( "/" );
+       umask( 0 );
+       if ( createLockFile() < 0 )
+-        exit( 1 );
++        _exit( 1 );
+ 
+       dropPrivileges();
+       installSignalHandler();
+Index: drkonqi/main.cpp
+===================================================================
+--- drkonqi/main.cpp	(revision 549512)
++++ drkonqi/main.cpp	(working copy)
+@@ -61,7 +61,8 @@ int main( int argc, char* argv[] )
+ {
+   // 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);
+--- kdm/kfrontend/kgreeter.cpp	(revision 549445)
++++ kdm/kfrontend/kgreeter.cpp	(working copy)
+@@ -251,7 +251,12 @@ KGreeter::insertUsers()
+ 	// 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 @@ KGreeter::insertUsers()
+ 
+ 	// XXX remove seteuid-voodoo when we run as nobody
+ 	seteuid( 0 );
++        setegid( 0 );
+ }
+ 
+ void
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/SOURCES/kdebase-branch.diff?r1=1.29&r2=1.30&f=u



More information about the pld-cvs-commit mailing list