Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
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;
}