diff options
author | OBATA Akio <obache@wizdas.com> | 2020-08-09 17:34:23 +0900 |
---|---|---|
committer | Slávek Banko <slavek.banko@axis.cz> | 2020-08-31 11:51:46 +0200 |
commit | f17a911197bdfc46089418ddae00f35ada87b314 (patch) | |
tree | 11ab414a354e2f69a10e83a53597b1977656b620 /dcop | |
parent | 928f3ce5fabcf1794a1843be442f366844d2b74c (diff) | |
download | tdelibs-f17a911197bdfc46089418ddae00f35ada87b314.tar.gz tdelibs-f17a911197bdfc46089418ddae00f35ada87b314.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>
(cherry picked from commit ac8c8ca54aaed1466255161a3d727dcfade4a7d9)
Diffstat (limited to 'dcop')
-rw-r--r-- | dcop/dcopclient.cpp | 17 | ||||
-rw-r--r-- | dcop/dcopserver_shutdown.c | 2 |
2 files changed, 16 insertions, 3 deletions
diff --git a/dcop/dcopclient.cpp b/dcop/dcopclient.cpp index 5dff084af..e2650885f 100644 --- a/dcop/dcopclient.cpp +++ b/dcop/dcopclient.cpp @@ -213,13 +213,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()) @@ -233,9 +246,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); } |