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-26 18:11:02 +0200 |
commit | ac8c8ca54aaed1466255161a3d727dcfade4a7d9 (patch) | |
tree | a16f3955e178f3dca2daf98bf0ade9750aa13f6f /dcop | |
parent | 56c5973b6b33df77a7491b07411cbd772c0d5d79 (diff) | |
download | tdelibs-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.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 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); } |