mirror of
https://bitbucket.org/smil3y/kdelibs.git
synced 2025-02-24 02:42:48 +00:00
generic: fix possible PID clamping
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
parent
0ea27e5d09
commit
a0547d6810
6 changed files with 38 additions and 38 deletions
|
@ -75,7 +75,7 @@ public Q_SLOTS: // METHODS
|
|||
return callWithArgumentList(QDBus::Block, QLatin1String("exec_blind"), argumentList);
|
||||
}
|
||||
|
||||
inline QDBusReply<int> kdeinit_exec(const QString &app, const QStringList &args, const QStringList &env, const QString &startup_id, QString &dbusServiceName, QString &error, int &pid)
|
||||
inline QDBusReply<int> kdeinit_exec(const QString &app, const QStringList &args, const QStringList &env, const QString &startup_id, QString &dbusServiceName, QString &error, qint64 &pid)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << qVariantFromValue(app) << qVariantFromValue(args) << qVariantFromValue(env) << qVariantFromValue(startup_id);
|
||||
|
@ -83,12 +83,12 @@ public Q_SLOTS: // METHODS
|
|||
if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().count() == 4) {
|
||||
dbusServiceName = qdbus_cast<QString>(reply.arguments().at(1));
|
||||
error = qdbus_cast<QString>(reply.arguments().at(2));
|
||||
pid = qdbus_cast<int>(reply.arguments().at(3));
|
||||
pid = qdbus_cast<qint64>(reply.arguments().at(3));
|
||||
}
|
||||
return reply;
|
||||
}
|
||||
|
||||
inline QDBusReply<int> kdeinit_exec_wait(const QString &app, const QStringList &args, const QStringList &env, const QString &startup_id, QString &dbusServiceName, QString &error, int &pid)
|
||||
inline QDBusReply<int> kdeinit_exec_wait(const QString &app, const QStringList &args, const QStringList &env, const QString &startup_id, QString &dbusServiceName, QString &error, qint64 &pid)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << qVariantFromValue(app) << qVariantFromValue(args) << qVariantFromValue(env) << qVariantFromValue(startup_id);
|
||||
|
@ -96,7 +96,7 @@ public Q_SLOTS: // METHODS
|
|||
if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().count() == 4) {
|
||||
dbusServiceName = qdbus_cast<QString>(reply.arguments().at(1));
|
||||
error = qdbus_cast<QString>(reply.arguments().at(2));
|
||||
pid = qdbus_cast<int>(reply.arguments().at(3));
|
||||
pid = qdbus_cast<qint64>(reply.arguments().at(3));
|
||||
}
|
||||
return reply;
|
||||
}
|
||||
|
@ -107,14 +107,14 @@ public Q_SLOTS: // METHODS
|
|||
return callWithArgumentList(QDBus::Block, QLatin1String("reparseConfiguration"), argumentList);
|
||||
}
|
||||
|
||||
inline QDBusReply<int> requestHoldSlave(const QString &url, const QString &app_socket)
|
||||
inline QDBusReply<qint64> requestHoldSlave(const QString &url, const QString &app_socket)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << qVariantFromValue(url) << qVariantFromValue(app_socket);
|
||||
return callWithArgumentList(QDBus::Block, QLatin1String("requestHoldSlave"), argumentList);
|
||||
}
|
||||
|
||||
inline QDBusReply<int> requestSlave(const QString &protocol, const QString &host, const QString &app_socket, QString &error)
|
||||
inline QDBusReply<qint64> requestSlave(const QString &protocol, const QString &host, const QString &app_socket, QString &error)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << qVariantFromValue(protocol) << qVariantFromValue(host) << qVariantFromValue(app_socket);
|
||||
|
@ -132,7 +132,7 @@ public Q_SLOTS: // METHODS
|
|||
return callWithArgumentList(QDBus::Block, QLatin1String("setLaunchEnv"), argumentList);
|
||||
}
|
||||
|
||||
inline QDBusReply<int> start_service_by_desktop_name(const QString &serviceName, const QStringList &urls, const QStringList &envs, const QString &startup_id, bool blind, QString &dbusServiceName, QString &error, int &pid)
|
||||
inline QDBusReply<int> start_service_by_desktop_name(const QString &serviceName, const QStringList &urls, const QStringList &envs, const QString &startup_id, bool blind, QString &dbusServiceName, QString &error, qint64 &pid)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << qVariantFromValue(serviceName) << qVariantFromValue(urls) << qVariantFromValue(envs) << qVariantFromValue(startup_id) << qVariantFromValue(blind);
|
||||
|
@ -140,12 +140,12 @@ public Q_SLOTS: // METHODS
|
|||
if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().count() == 4) {
|
||||
dbusServiceName = qdbus_cast<QString>(reply.arguments().at(1));
|
||||
error = qdbus_cast<QString>(reply.arguments().at(2));
|
||||
pid = qdbus_cast<int>(reply.arguments().at(3));
|
||||
pid = qdbus_cast<qint64>(reply.arguments().at(3));
|
||||
}
|
||||
return reply;
|
||||
}
|
||||
|
||||
inline QDBusReply<int> start_service_by_desktop_path(const QString &serviceName, const QStringList &urls, const QStringList &envs, const QString &startup_id, bool blind, QString &dbusServiceName, QString &error, int &pid)
|
||||
inline QDBusReply<int> start_service_by_desktop_path(const QString &serviceName, const QStringList &urls, const QStringList &envs, const QString &startup_id, bool blind, QString &dbusServiceName, QString &error, qint64 &pid)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << qVariantFromValue(serviceName) << qVariantFromValue(urls) << qVariantFromValue(envs) << qVariantFromValue(startup_id) << qVariantFromValue(blind);
|
||||
|
@ -153,12 +153,12 @@ public Q_SLOTS: // METHODS
|
|||
if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().count() == 4) {
|
||||
dbusServiceName = qdbus_cast<QString>(reply.arguments().at(1));
|
||||
error = qdbus_cast<QString>(reply.arguments().at(2));
|
||||
pid = qdbus_cast<int>(reply.arguments().at(3));
|
||||
pid = qdbus_cast<qint64>(reply.arguments().at(3));
|
||||
}
|
||||
return reply;
|
||||
}
|
||||
|
||||
inline QDBusReply<int> start_service_by_name(const QString &serviceName, const QStringList &urls, const QStringList &envs, const QString &startup_id, bool blind, QString &dbusServiceName, QString &error, int &pid)
|
||||
inline QDBusReply<int> start_service_by_name(const QString &serviceName, const QStringList &urls, const QStringList &envs, const QString &startup_id, bool blind, QString &dbusServiceName, QString &error, qint64 &pid)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << qVariantFromValue(serviceName) << qVariantFromValue(urls) << qVariantFromValue(envs) << qVariantFromValue(startup_id) << qVariantFromValue(blind);
|
||||
|
@ -166,7 +166,7 @@ public Q_SLOTS: // METHODS
|
|||
if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().count() == 4) {
|
||||
dbusServiceName = qdbus_cast<QString>(reply.arguments().at(1));
|
||||
error = qdbus_cast<QString>(reply.arguments().at(2));
|
||||
pid = qdbus_cast<int>(reply.arguments().at(3));
|
||||
pid = qdbus_cast<qint64>(reply.arguments().at(3));
|
||||
}
|
||||
return reply;
|
||||
}
|
||||
|
|
|
@ -1161,17 +1161,17 @@ bool KLauncher::checkForHeldSlave(const QString &url)
|
|||
}
|
||||
|
||||
void
|
||||
KLauncher::waitForSlave(int pid, QDBusMessage msg)
|
||||
KLauncher::waitForSlave(pid_t pid, QDBusMessage msg)
|
||||
{
|
||||
foreach (IdleSlave *slave, mSlaveList)
|
||||
{
|
||||
if (slave->pid() == static_cast<pid_t>(pid))
|
||||
if (slave->pid() == pid)
|
||||
return; // Already here.
|
||||
}
|
||||
SlaveWaitRequest *waitRequest = new SlaveWaitRequest;
|
||||
msg.setDelayedReply(true);
|
||||
waitRequest->transaction = msg;
|
||||
waitRequest->pid = static_cast<pid_t>(pid);
|
||||
waitRequest->pid = pid;
|
||||
mSlaveWaitRequest.append(waitRequest);
|
||||
}
|
||||
|
||||
|
|
|
@ -237,7 +237,7 @@ public: // remote methods, called by KLauncherAdaptor
|
|||
* @since 4.7
|
||||
*/
|
||||
bool checkForHeldSlave(const QString &url);
|
||||
void waitForSlave(int pid, QDBusMessage msg);
|
||||
void waitForSlave(pid_t pid, QDBusMessage msg);
|
||||
void terminate_kdeinit();
|
||||
|
||||
public Q_SLOTS:
|
||||
|
|
|
@ -60,21 +60,21 @@ void KLauncherAdaptor::exec_blind(const QString &name, const QStringList &arg_li
|
|||
static_cast<KLauncher *>(parent())->exec_blind(name, arg_list, envs, startup_id);
|
||||
}
|
||||
|
||||
int KLauncherAdaptor::kdeinit_exec(const QString &app, const QStringList &args, const QStringList &env, const QString& startup_id, const QDBusMessage &msg, QString &, QString &, int &)
|
||||
int KLauncherAdaptor::kdeinit_exec(const QString &app, const QStringList &args, const QStringList &env, const QString& startup_id, const QDBusMessage &msg, QString &, QString &, qint64 &)
|
||||
{
|
||||
// handle method call org.kde.KLauncher.kdeinit_exec
|
||||
static_cast<KLauncher *>(parent())->kdeinit_exec(app, args, QString(), env, startup_id, false, msg);
|
||||
return 0; // delayed reply
|
||||
}
|
||||
|
||||
int KLauncherAdaptor::kdeinit_exec_wait(const QString &app, const QStringList &args, const QStringList &env, const QString& startup_id, const QDBusMessage &msg, QString &, QString &, int &)
|
||||
int KLauncherAdaptor::kdeinit_exec_wait(const QString &app, const QStringList &args, const QStringList &env, const QString& startup_id, const QDBusMessage &msg, QString &, QString &, qint64 &)
|
||||
{
|
||||
// handle method call org.kde.KLauncher.kdeinit_exec_wait
|
||||
static_cast<KLauncher *>(parent())->kdeinit_exec(app, args, QString(), env, startup_id, true, msg);
|
||||
return 0; // delayed reply
|
||||
}
|
||||
|
||||
int KLauncherAdaptor::kdeinit_exec_with_workdir(const QString &app, const QStringList &args, const QString& workdir, const QStringList &env, const QString& startup_id, const QDBusMessage &msg, QString &, QString &, int &)
|
||||
int KLauncherAdaptor::kdeinit_exec_with_workdir(const QString &app, const QStringList &args, const QString& workdir, const QStringList &env, const QString& startup_id, const QDBusMessage &msg, QString &, QString &, qint64 &)
|
||||
{
|
||||
// handle method call org.kde.KLauncher.kdeinit_exec_with_workdir
|
||||
static_cast<KLauncher *>(parent())->kdeinit_exec(app, args, workdir, env, startup_id, false, msg);
|
||||
|
@ -87,13 +87,13 @@ void KLauncherAdaptor::reparseConfiguration()
|
|||
static_cast<KLauncher *>(parent())->reparseConfiguration();
|
||||
}
|
||||
|
||||
int KLauncherAdaptor::requestHoldSlave(const QString &url, const QString &app_socket)
|
||||
qint64 KLauncherAdaptor::requestHoldSlave(const QString &url, const QString &app_socket)
|
||||
{
|
||||
// handle method call org.kde.KLauncher.requestHoldSlave
|
||||
return static_cast<KLauncher *>(parent())->requestHoldSlave(KUrl(url), app_socket);
|
||||
}
|
||||
|
||||
int KLauncherAdaptor::requestSlave(const QString &protocol, const QString &host, const QString &app_socket, QString &error)
|
||||
qint64 KLauncherAdaptor::requestSlave(const QString &protocol, const QString &host, const QString &app_socket, QString &error)
|
||||
{
|
||||
// handle method call org.kde.KLauncher.requestSlave
|
||||
return static_cast<KLauncher *>(parent())->requestSlave(protocol, host, app_socket, error);
|
||||
|
@ -110,7 +110,7 @@ void KLauncherAdaptor::setLaunchEnv(const QString &name, const QString &value)
|
|||
static_cast<KLauncher *>(parent())->setLaunchEnv(name, value);
|
||||
}
|
||||
|
||||
int KLauncherAdaptor::start_service_by_desktop_name(const QString &serviceName, const QStringList &urls, const QStringList &envs, const QString &startup_id, bool blind, const QDBusMessage &msg, QString &dbusServiceName, QString &error, int &pid)
|
||||
int KLauncherAdaptor::start_service_by_desktop_name(const QString &serviceName, const QStringList &urls, const QStringList &envs, const QString &startup_id, bool blind, const QDBusMessage &msg, QString &dbusServiceName, QString &error, qint64 &pid)
|
||||
{
|
||||
// handle method call org.kde.KLauncher.start_service_by_desktop_name
|
||||
KLauncher *p = static_cast<KLauncher *>(parent());
|
||||
|
@ -121,7 +121,7 @@ int KLauncherAdaptor::start_service_by_desktop_name(const QString &serviceName,
|
|||
return p->requestResult.result;
|
||||
}
|
||||
|
||||
int KLauncherAdaptor::start_service_by_desktop_path(const QString &serviceName, const QStringList &urls, const QStringList &envs, const QString &startup_id, bool blind, const QDBusMessage &msg, QString &dbusServiceName, QString &error, int &pid)
|
||||
int KLauncherAdaptor::start_service_by_desktop_path(const QString &serviceName, const QStringList &urls, const QStringList &envs, const QString &startup_id, bool blind, const QDBusMessage &msg, QString &dbusServiceName, QString &error, qint64 &pid)
|
||||
{
|
||||
// handle method call org.kde.KLauncher.start_service_by_desktop_path
|
||||
KLauncher *p = static_cast<KLauncher *>(parent());
|
||||
|
@ -132,7 +132,7 @@ int KLauncherAdaptor::start_service_by_desktop_path(const QString &serviceName,
|
|||
return p->requestResult.result;
|
||||
}
|
||||
|
||||
int KLauncherAdaptor::start_service_by_name(const QString &serviceName, const QStringList &urls, const QStringList &envs, const QString &startup_id, bool blind, const QDBusMessage &msg, QString &dbusServiceName, QString &error, int &pid)
|
||||
int KLauncherAdaptor::start_service_by_name(const QString &serviceName, const QStringList &urls, const QStringList &envs, const QString &startup_id, bool blind, const QDBusMessage &msg, QString &dbusServiceName, QString &error, qint64 &pid)
|
||||
{
|
||||
// handle method call org.kde.KLauncher.start_service_by_name
|
||||
KLauncher *p = static_cast<KLauncher *>(parent());
|
||||
|
@ -143,7 +143,7 @@ int KLauncherAdaptor::start_service_by_name(const QString &serviceName, const QS
|
|||
return p->requestResult.result;
|
||||
}
|
||||
|
||||
void KLauncherAdaptor::waitForSlave(int pid, const QDBusMessage &msg)
|
||||
void KLauncherAdaptor::waitForSlave(qint64 pid, const QDBusMessage &msg)
|
||||
{
|
||||
// handle method call org.kde.KLauncher.waitForSlave
|
||||
static_cast<KLauncher *>(parent())->waitForSlave(pid, msg);
|
||||
|
|
|
@ -48,19 +48,19 @@ public Q_SLOTS: // METHODS
|
|||
void autoStart(int phase = 1);
|
||||
void exec_blind(const QString &name, const QStringList &arg_list);
|
||||
void exec_blind(const QString &name, const QStringList &arg_list, const QStringList &envs, const QString &startup_id);
|
||||
int kdeinit_exec(const QString &app, const QStringList &args, const QStringList &env, const QString& startup_id, const QDBusMessage &msg, QString &dbusServiceName, QString &error, int &pid);
|
||||
int kdeinit_exec_wait(const QString &app, const QStringList &args, const QStringList &env, const QString& startup_id, const QDBusMessage &msg, QString &dbusServiceName, QString &error, int &pid);
|
||||
int kdeinit_exec_with_workdir(const QString &app, const QStringList &args, const QString& workdir, const QStringList &env, const QString& startup_id, const QDBusMessage &msg, QString &dbusServiceName, QString &error, int &pid);
|
||||
int kdeinit_exec(const QString &app, const QStringList &args, const QStringList &env, const QString& startup_id, const QDBusMessage &msg, QString &dbusServiceName, QString &error, qint64 &pid);
|
||||
int kdeinit_exec_wait(const QString &app, const QStringList &args, const QStringList &env, const QString& startup_id, const QDBusMessage &msg, QString &dbusServiceName, QString &error, qint64 &pid);
|
||||
int kdeinit_exec_with_workdir(const QString &app, const QStringList &args, const QString& workdir, const QStringList &env, const QString& startup_id, const QDBusMessage &msg, QString &dbusServiceName, QString &error, qint64 &pid);
|
||||
void reparseConfiguration();
|
||||
int requestHoldSlave(const QString &url, const QString &app_socket);
|
||||
int requestSlave(const QString &protocol, const QString &host, const QString &app_socket, QString &error);
|
||||
qint64 requestHoldSlave(const QString &url, const QString &app_socket);
|
||||
qint64 requestSlave(const QString &protocol, const QString &host, const QString &app_socket, QString &error);
|
||||
bool checkForHeldSlave (const QString &url);
|
||||
void setLaunchEnv(const QString &name, const QString &value);
|
||||
int start_service_by_desktop_name(const QString &serviceName, const QStringList &urls, const QStringList &envs, const QString &startup_id, bool blind, const QDBusMessage &msg, QString &dbusServiceName, QString &error, int &pid);
|
||||
int start_service_by_desktop_path(const QString &serviceName, const QStringList &urls, const QStringList &envs, const QString &startup_id, bool blind, const QDBusMessage &msg, QString &dbusServiceName, QString &error, int &pid);
|
||||
int start_service_by_desktop_name(const QString &serviceName, const QStringList &urls, const QStringList &envs, const QString &startup_id, bool blind, const QDBusMessage &msg, QString &dbusServiceName, QString &error, qint64 &pid);
|
||||
int start_service_by_desktop_path(const QString &serviceName, const QStringList &urls, const QStringList &envs, const QString &startup_id, bool blind, const QDBusMessage &msg, QString &dbusServiceName, QString &error, qint64 &pid);
|
||||
// Deprecated, to be removed in KDE5.
|
||||
int start_service_by_name(const QString &serviceName, const QStringList &urls, const QStringList &envs, const QString &startup_id, bool blind, const QDBusMessage &msg, QString &dbusServiceName, QString &error, int &pid);
|
||||
void waitForSlave(int pid, const QDBusMessage &msg);
|
||||
int start_service_by_name(const QString &serviceName, const QStringList &urls, const QStringList &envs, const QString &startup_id, bool blind, const QDBusMessage &msg, QString &dbusServiceName, QString &error, qint64 &pid);
|
||||
void waitForSlave(qint64 pid, const QDBusMessage &msg);
|
||||
void terminate_kdeinit();
|
||||
Q_SIGNALS: // SIGNALS
|
||||
void autoStart0Done();
|
||||
|
|
|
@ -456,10 +456,10 @@ Slave* Slave::createSlave( const QString &protocol, const KUrl& url, int& error,
|
|||
|
||||
org::kde::KLauncher* klauncher = KToolInvocation::klauncher();
|
||||
QString errorStr;
|
||||
QDBusReply<int> reply = klauncher->requestSlave(protocol, url.host(), slaveAddress, errorStr);
|
||||
QDBusReply<qint64> reply = klauncher->requestSlave(protocol, url.host(), slaveAddress, errorStr);
|
||||
if (!reply.isValid()) {
|
||||
error_text = i18n("Cannot talk to klauncher: %1", klauncher->lastError().message() );
|
||||
error = KIO::ERR_CANNOT_LAUNCH_PROCESS;
|
||||
error_text = i18n("Cannot talk to klauncher: %1", klauncher->lastError().message() );
|
||||
error = KIO::ERR_CANNOT_LAUNCH_PROCESS;
|
||||
delete slave;
|
||||
return 0;
|
||||
}
|
||||
|
@ -484,7 +484,7 @@ Slave* Slave::holdSlave( const QString &protocol, const KUrl& url )
|
|||
return 0;
|
||||
Slave *slave = new Slave(protocol);
|
||||
QString slaveAddress = slave->d_func()->slaveconnserver->address();
|
||||
QDBusReply<int> reply = KToolInvocation::klauncher()->requestHoldSlave(url.url(), slaveAddress);
|
||||
QDBusReply<qint64> reply = KToolInvocation::klauncher()->requestHoldSlave(url.url(), slaveAddress);
|
||||
if (!reply.isValid()) {
|
||||
delete slave;
|
||||
return 0;
|
||||
|
|
Loading…
Add table
Reference in a new issue