summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichele Calgaro <michele.calgaro@yahoo.it>2019-03-10 17:24:02 +0900
committerMichele Calgaro <michele.calgaro@yahoo.it>2019-03-10 17:24:02 +0900
commit7aa9258f19a31fd12da607e64e324e4c503d0cf4 (patch)
treea638bf1149b956e1cb0316c80adfe161c32d9883
parentc80e5d45b719cf0a769410ecd90fb0156394d322 (diff)
downloadtdebase-7aa9258f19a31fd12da607e64e324e4c503d0cf4.tar.gz
tdebase-7aa9258f19a31fd12da607e64e324e4c503d0cf4.zip
Fixed use of SAK in lock process when autologin is used in TDM.
This resolves bug 2945. Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
-rw-r--r--kcontrol/screensaver/scrnsave.cpp19
-rw-r--r--kdesktop/lock/main.cc16
-rw-r--r--tdm/backend/CMakeLists.txt3
-rw-r--r--tdm/backend/dm.c4
-rw-r--r--tdm/backend/session.c25
-rw-r--r--tdm/config.def3
-rw-r--r--tdm/kfrontend/kgapp.cpp22
7 files changed, 45 insertions, 47 deletions
diff --git a/kcontrol/screensaver/scrnsave.cpp b/kcontrol/screensaver/scrnsave.cpp
index a0b26ae46..b66f7bbd6 100644
--- a/kcontrol/screensaver/scrnsave.cpp
+++ b/kcontrol/screensaver/scrnsave.cpp
@@ -46,20 +46,9 @@
#include <ksimpleconfig.h>
#include <X11/Xlib.h>
-
#include "scrnsave.h"
-
#include <fixx11h.h>
-#define OPEN_TDMCONFIG_AND_SET_GROUP \
-if( stat( KDE_CONFDIR "/tdm/tdmdistrc" , &st ) == 0) { \
- mTDMConfig = new KSimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmdistrc" )); \
-} \
-else { \
- mTDMConfig = new KSimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmrc" )); \
-} \
-mTDMConfig->setGroup("X-:*-Greeter");
-
template class TQPtrList<SaverConfig>;
const uint widgetEventMask = // X event mask
@@ -94,7 +83,13 @@ KScreenSaver::KScreenSaver(TQWidget *parent, const char *name, const TQStringLis
mTesting = false;
struct stat st;
- OPEN_TDMCONFIG_AND_SET_GROUP
+ if( stat( KDE_CONFDIR "/tdm/tdmdistrc" , &st ) == 0) {
+ mTDMConfig = new KSimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmdistrc" ));
+ }
+ else {
+ mTDMConfig = new KSimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmrc" ));
+ }
+ mTDMConfig->setGroup("X-:*-Greeter");
// Add non-TDE path
TDEGlobal::dirs()->addResourceType("scrsav",
diff --git a/kdesktop/lock/main.cc b/kdesktop/lock/main.cc
index f2732345a..4960b8d01 100644
--- a/kdesktop/lock/main.cc
+++ b/kdesktop/lock/main.cc
@@ -54,14 +54,6 @@
# include <fixx11h.h>
#endif
-#define OPEN_TDMCONFIG_AND_SET_GROUP \
-if( stat( KDE_CONFDIR "/tdm/tdmdistrc" , &st ) == 0) { \
- tdmconfig = new KSimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmdistrc" )); \
-} \
-else { \
- tdmconfig = new KSimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmrc" )); \
-} \
-tdmconfig->setGroup("X-:*-Greeter");
TQXLibWindowList trinity_desktop_lock_hidden_window_list;
@@ -376,7 +368,13 @@ int main( int argc, char **argv )
struct stat st;
KSimpleConfig* tdmconfig;
- OPEN_TDMCONFIG_AND_SET_GROUP
+ if( stat( KDE_CONFDIR "/tdm/tdmdistrc" , &st ) == 0) {
+ tdmconfig = new KSimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmdistrc" ));
+ }
+ else {
+ tdmconfig = new KSimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmrc" ));
+ }
+ tdmconfig->setGroup("X-:*-Greeter");
// Create new LockProcess, which also spawns threads inheriting the blocked signal mask
trinity_desktop_lock_process = new LockProcess;
diff --git a/tdm/backend/CMakeLists.txt b/tdm/backend/CMakeLists.txt
index da3f3ac03..bece8be72 100644
--- a/tdm/backend/CMakeLists.txt
+++ b/tdm/backend/CMakeLists.txt
@@ -15,6 +15,7 @@ include_directories(
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_BINARY_DIR}
${DBUS_INCLUDE_DIRS}
+ ${CMAKE_SOURCE_DIR}/tdm/kfrontend
)
link_directories(
@@ -27,7 +28,7 @@ add_custom_command( OUTPUT config.ci
COMMAND perl -w ${CMAKE_SOURCE_DIR}/tdm/confproc.pl ${CMAKE_SOURCE_DIR}/tdm/config.def config.ci
DEPENDS ${CMAKE_SOURCE_DIR}/tdm/confproc.pl ${CMAKE_SOURCE_DIR}/tdm/config.def )
-set_property( SOURCE auth.c APPEND PROPERTY OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/config.ci )
+set_property( SOURCE auth.c session.c APPEND PROPERTY OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/config.ci )
if( WITH_XDMCP )
set( XDMCP_LIBRARIES "Xdmcp" )
diff --git a/tdm/backend/dm.c b/tdm/backend/dm.c
index 861037032..605f0b1c4 100644
--- a/tdm/backend/dm.c
+++ b/tdm/backend/dm.c
@@ -576,12 +576,12 @@ StartRemoteLogin( struct display *d )
/* Let's try again with some standard paths */
argv[0] = (char *)realloc(argv[0], strlen("/usr/X11R6/bin/X") + 1);
if (argv[0] != NULL) {
- argv[0] = "/usr/X11R6/bin/X";
+ strcpy(argv[0], "/usr/X11R6/bin/X");
Debug( "exec %\"[s\n", argv );
(void)execv( argv[0], argv );
LogError( "X server %\"s cannot be executed\n", argv[0] );
- argv[0] = "/usr/bin/X"; /* Shorter than the previous file name */
+ strcpy(argv[0], "/usr/bin/X"); // Shorter than the previous file name
Debug( "exec %\"[s\n", argv );
(void)execv( argv[0], argv );
LogError( "X server %\"s cannot be executed\n", argv[0] );
diff --git a/tdm/backend/session.c b/tdm/backend/session.c
index 4b5f372db..0bcd92d5f 100644
--- a/tdm/backend/session.c
+++ b/tdm/backend/session.c
@@ -34,6 +34,8 @@ from the copyright holder.
* subdaemon event loop, etc.
*/
+
+#include "tdmconfig.h"
#include "dm.h"
#include "dm_error.h"
@@ -49,6 +51,8 @@ from the copyright holder.
#include "consolekit.h"
#endif
+#define TSAK_FIFO_FILE "/tmp/tdesocket-global/tsak"
+
struct display *td;
const char *td_setup = "auto";
@@ -576,6 +580,27 @@ ManageSession( struct display *d )
goto regreet;
}
+ int start_tsak = 0;
+#ifdef BUILD_TSAK
+ start_tsak = d->useSAK;
+#endif
+ if (start_tsak) {
+ if (system(KDE_BINDIR "/tsak checkdeps") != 0) {
+ start_tsak = 0;
+ }
+ }
+ if (start_tsak) {
+ int ret_pid = fork();
+ if (ret_pid == 0) {
+ // Child process
+ system(KDE_BINDIR "/tsak");
+ exit(0);
+ }
+ }
+ else {
+ remove(TSAK_FIFO_FILE);
+ }
+
tdiff = time( 0 ) - td->hstent->lastExit - td->openDelay;
if (AutoLogon( tdiff )) {
if (!Verify( conv_auto, FALSE ))
diff --git a/tdm/config.def b/tdm/config.def
index 124887f20..5cfc56ed5 100644
--- a/tdm/config.def
+++ b/tdm/config.def
@@ -2011,10 +2011,11 @@ Description:
Key: UseSAK
Type: bool
Default: false
+User: core
User: greeter
Instance: #:*/false
Comment:
- SAK
+ Use SAK
Description:
If true then the SAK anti-spoofing dialog will be utilized
diff --git a/tdm/kfrontend/kgapp.cpp b/tdm/kfrontend/kgapp.cpp
index 67178cc05..5487269d7 100644
--- a/tdm/kfrontend/kgapp.cpp
+++ b/tdm/kfrontend/kgapp.cpp
@@ -67,8 +67,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include <pwd.h>
-#define TSAK_FIFO_FILE "/tmp/tdesocket-global/tsak"
-
bool argb_visual_available = false;
bool has_twin = false;
bool is_themed = false;
@@ -217,7 +215,6 @@ kg_main( const char *argv0 )
TDEApplication::disableAutoDcopRegistration();
TDECrash::setSafer( true );
- TDEProcess *tsak = 0;
TDEProcess *kbdl = 0;
TDEProcess *ccsm = 0;
TDEProcess *proc = 0;
@@ -230,25 +227,6 @@ kg_main( const char *argv0 )
#else
trinity_desktop_lock_use_sak = false;
#endif
- if (trinity_desktop_lock_use_sak) {
- if (system(KDE_BINDIR "/tsak checkdeps") != 0) {
- trinity_desktop_lock_use_sak = false;
- }
- }
- if (trinity_desktop_lock_use_sak) {
- tsak = new TDEProcess;
- *tsak << TQCString( argv0, strrchr( argv0, '/' ) - argv0 + 2 ) + "tsak";
- tsak->start(TDEProcess::Block, TDEProcess::AllOutput);
- }
- else {
- remove(TSAK_FIFO_FILE);
- }
- if (tsak) {
- tsak->closeStdin();
- tsak->closeStdout();
- tsak->detach();
- delete tsak;
- }
if (trinity_desktop_synchronize_keyboard_lights &&
TQString(getenv("DISPLAY")).startsWith(":")) {