[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdenonbeta/icecream/icecream/services
From:       Michael Matz <matz () kde ! org>
Date:       2004-08-22 15:37:56
Message-ID: 20040822153756.3453626E8 () office ! kde ! org
[Download RAW message or body]

CVS commit by matz: 

Don't allow non-chroot-able daemons to connect without cmdline option.
And don't give them out as compile hosts.


  M +17 -1     scheduler.cpp   1.150


--- kdenonbeta/icecream/icecream/services/scheduler.cpp  #1.149:1.150
@@ -131,5 +131,5 @@ public:
   CS (struct sockaddr *_addr, socklen_t _len)
     : Service(_addr, _len), load(1000), max_jobs(0), state(CONNECTED),
-      type(UNKNOWN) {
+      type(UNKNOWN), chroot_possible(false) {
     hostid = 0;
     busy_installing = 0;
@@ -145,4 +145,5 @@ public:
   enum {CONNECTED, LOGGEDIN} state;
   enum {UNKNOWN, CLIENT, DAEMON, MONITOR, LINE} type;
+  bool chroot_possible;
   static unsigned int hostid_counter;
 };
@@ -604,4 +605,5 @@ pick_server(Job *job)
           trace() << "no job stats - looking at " << ( *it )->nodename << " load: " \
<< (*it )->load << " can install: " << can_install( *it, job ) << endl;  if (int( \
(*it)->joblist.size() ) < (*it)->max_jobs +              && (*it)->chroot_possible
               && (*it)->load < 1000 && can_install( *it, job ).size() )
             {
@@ -656,4 +658,12 @@ pick_server(Job *job)
       }
 
+      /* Don't use non-chroot-able daemons for remote jobs.  XXX */
+      if (!cs->chroot_possible)
+        {
+          trace() << cs->nodename << " can't use chroot\n";
+          continue;
+        }
+         
+
 #if DEBUG_SCHEDULER > 1
       trace() << cs->nodename << " compiled " << cs->last_compiled_jobs.size() << " \
got now: " << @@ -850,4 +860,9 @@ handle_login (MsgChannel *c, Msg *_m)
     return false;
 
+  /* If we don't allow non-chroot-able daemons in the farm,
+     discard them here.  */
+  if (!allow_run_as_user && !m->chroot_possible)
+    return false;
+
   CS *cs = static_cast<CS *>(c->other_end);
   cs->remote_port = m->port;
@@ -859,4 +874,5 @@ handle_login (MsgChannel *c, Msg *_m)
     cs->nodename = cs->name;
   cs->host_platform = m->host_platform;
+  cs->chroot_possible = m->chroot_possible;
   cs->pick_new_id();
   handle_monitor_stats( cs );


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic