bool KDEsuClient::isServerSGID() { if(d->daemon.isEmpty()) d->daemon = findDaemon(); if(d->daemon.isEmpty()) return false; KDE_struct_stat sbuf; if(KDE_stat(QFile::encodeName(d->daemon), &sbuf) < 0) { kdWarning(900) << k_lineinfo << "stat(): " << perror << "\n"; return false; } return (sbuf.st_mode & S_ISGID); }
int KDEsuClient::startServer() { if (d->daemon.isEmpty()) d->daemon = findDaemon(); if (d->daemon.isEmpty()) return -1; if (!isServerSGID()) { kdWarning(900) << k_lineinfo << "kdesud not setgid!\n"; } // kdesud only forks to the background after it is accepting // connections. // We start it via kdeinit to make sure that it doesn't inherit // any fd's from the parent process. int ret = kapp->kdeinitExecWait(d->daemon); connect(); return ret; }