Browse Source

Fix a possible null pointer dereference.

On some systems getlogin() function might fail to obtain user name.
For now just check whether pointer is nullptr. In that case suspending
plasma device automounter would not work but at least we will not crash.

In future it might make sense to try to use other methods of obtaining login
name, such as running "who am i".

BUG: 381987
3.2 v3.1.2
Andrius Štikonas 4 years ago
parent
commit
13c063a150
1 changed files with 8 additions and 2 deletions
  1. +8
    -2
      src/core/operationrunner.cpp

+ 8
- 2
src/core/operationrunner.cpp View File

@ -51,8 +51,14 @@ void OperationRunner::run()
// Disable Plasma removable device automounting
unsigned int currentUid = getuid(); // 0 if running as root
unsigned int userId = getpwnam(getlogin())->pw_uid; // uid of original user before sudo
seteuid(userId);
char *login = getlogin();
if (login != nullptr){
passwd* pwnam = getpwnam(login);
if (pwnam != nullptr) {
unsigned int userId = pwnam->pw_uid; // uid of original user before sudo
seteuid(userId);
}
}
QStringList modules;
QDBusConnection bus = QDBusConnection::connectToBus(QDBusConnection::SessionBus, QStringLiteral("sessionBus"));
QDBusInterface kdedInterface( QStringLiteral("org.kde.kded5"), QStringLiteral("/kded"), QStringLiteral("org.kde.kded5"), bus );


Loading…
Cancel
Save