[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: icecream/daemon [POSSIBLY UNSAFE]
From: Dirk Mueller <mueller () kde ! org>
Date: 2006-07-06 15:37:00
Message-ID: 1152200220.417965.2622.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 559106 by mueller:
fix assertion failures in daemon upon sigchild delivery
M +5 -4 environment.cpp [POSSIBLY UNSAFE: system]
M +4 -1 main.cpp
--- trunk/icecream/daemon/environment.cpp #559105:559106
@@ -363,15 +363,16 @@
char buffer[PATH_MAX];
snprintf( buffer, PATH_MAX, "rm -rf '/%s'", dirname.c_str() );
system( buffer );
- status = 1;
} else {
- if ( waitpid( pid, &status, 0) != pid )
- status = 1;
- mkdir( ( dirname + "/tmp" ).c_str(), 01775 );
+ mkdir( ( dirname + "/tmp" ).c_str(), 01775 );
chown( ( dirname + "/tmp" ).c_str(), 0, nobody_gid );
chmod( ( dirname + "/tmp" ).c_str(), 01775 );
}
+ status = 1;
+ while ( waitpid( pid, &status, 0) < 0 && errno == EINTR)
+ ;
+
if ( status ) {
return 0;
} else {
--- trunk/icecream/daemon/main.cpp #559105:559106
@@ -854,7 +854,10 @@
{
struct rusage ru;
int status;
- pid_t child = wait3(&status, WNOHANG, &ru);
+ pid_t child;
+
+ while((child = wait3(&status, WNOHANG, &ru)) < 0 && errno == EINTR)
+ ;
if ( child > 0 ) {
JobDoneMsg *msg = jobmap[child];
if ( msg )
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic