summaryrefslogtreecommitdiffstats
path: root/dcop
diff options
context:
space:
mode:
authorOBATA Akio <obache@wizdas.com>2020-08-09 17:34:23 +0900
committerSlávek Banko <slavek.banko@axis.cz>2020-08-26 18:11:02 +0200
commitac8c8ca54aaed1466255161a3d727dcfade4a7d9 (patch)
treea16f3955e178f3dca2daf98bf0ade9750aa13f6f /dcop
parent56c5973b6b33df77a7491b07411cbd772c0d5d79 (diff)
downloadtdelibs-ac8c8ca54aaed1466255161a3d727dcfade4a7d9.tar.gz
tdelibs-ac8c8ca54aaed1466255161a3d727dcfade4a7d9.zip
Add a knob to use fixed path `iceauth` tool
`system()` and `popen()` may unsafe unless using absolute command path. Rely on PATH environment variable set by users may result in unwanted tool. Signed-off-by: OBATA Akio <obache@wizdas.com> Signed-off-by: Slávek Banko <slavek.banko@axis.cz>
Diffstat (limited to 'dcop')
-rw-r--r--dcop/dcopclient.cpp17
-rw-r--r--dcop/dcopserver_shutdown.c2
2 files changed, 16 insertions, 3 deletions
diff --git a/dcop/dcopclient.cpp b/dcop/dcopclient.cpp
index 4e46cd828..607e2e52a 100644
--- a/dcop/dcopclient.cpp
+++ b/dcop/dcopclient.cpp
@@ -210,13 +210,26 @@ public:
TQCString DCOPClient::iceauthPath()
{
-#ifdef Q_OS_WIN32
+#if defined(ICEAUTH_PATH)
+ if (
+# if defined(Q_WS_WIN)
+ access(ICEAUTH_PATH, 0) == 0
+# else
+ access(ICEAUTH_PATH, X_OK) == 0
+# endif
+ )
+ {
+ return TQCString(ICEAUTH_PATH);
+ }
+
+#elif defined(Q_OS_WIN32)
char szPath[512];
char * pszFilePart;
int ret;
ret = SearchPathA(NULL,"iceauth.exe",NULL,sizeof(szPath)/sizeof(szPath[0]),szPath,&pszFilePart);
if(ret != 0)
return TQCString(szPath);
+
#else
TQCString path = ::getenv("PATH");
if (path.isEmpty())
@@ -230,9 +243,9 @@ TQCString DCOPClient::iceauthPath()
{
return fPath;
}
-
fPath = strtok(NULL, ":\b");
}
+
#endif
return 0;
}
diff --git a/dcop/dcopserver_shutdown.c b/dcop/dcopserver_shutdown.c
index fb25a86fa..af75c6d5a 100644
--- a/dcop/dcopserver_shutdown.c
+++ b/dcop/dcopserver_shutdown.c
@@ -151,7 +151,7 @@ static void cleanupDCOPsocket(char *buffer)
if (socket_file)
unlink(socket_file);
- snprintf(cmd, BUFFER_SIZE, "iceauth remove netid='%s'", buffer);
+ snprintf(cmd, BUFFER_SIZE, ICEAUTH_COMMAND " remove netid='%s'", buffer);
system(cmd);
}