988 lines
39 KiB
Diff
988 lines
39 KiB
Diff
From a076bff281bf7d8b3a5b6dc61f82a2e2cb25d23c Mon Sep 17 00:00:00 2001
|
||
From: liuxinhao <liuxinhao@kylinsec.com.cn>
|
||
Date: Wed, 31 Jan 2024 11:46:23 +0800
|
||
Subject: [PATCH 13/16] fix(code scanning ): Fix some static code scanning
|
||
issues
|
||
MIME-Version: 1.0
|
||
Content-Type: text/plain; charset=UTF-8
|
||
Content-Transfer-Encoding: 8bit
|
||
|
||
- 修复一些代码静态扫描问题
|
||
---
|
||
lib/auth-proxy/auth-controller-i.h | 13 ++
|
||
lib/common-widgets/auth-type-drawer.cpp | 15 ++-
|
||
lib/common-widgets/auth-type-drawer.h | 13 ++
|
||
lib/common-widgets/auth-type-switcher.cpp | 17 ++-
|
||
...m.kylinsec.Kiran.SystemDaemon.Accounts.xml | 8 --
|
||
lib/login-frame/login-frame.cpp | 2 +-
|
||
lib/utils/keyboard-monitor.cpp | 69 ++++------
|
||
lib/utils/scaling-helper.cpp | 125 ++++++++++--------
|
||
lib/utils/virtual-keyboard.h | 4 +-
|
||
src/lightdm-greeter/common/prefs.cpp | 26 ++--
|
||
src/lightdm-greeter/frame.cpp | 6 +-
|
||
.../kiran-cpanel-greeter/main.cpp | 13 ++
|
||
.../kiran-cpanel-greeter/setting-window.cpp | 1 -
|
||
src/lightdm-greeter/term-signal-handler.cpp | 2 +-
|
||
.../widgets/disabledeselectlistwidget.cpp | 11 +-
|
||
src/lightdm-greeter/widgets/login-button.cpp | 7 +-
|
||
src/lightdm-greeter/widgets/user-info.h | 2 +
|
||
src/lightdm-greeter/widgets/user-list.cpp | 15 ++-
|
||
src/lightdm-greeter/widgets/user-list.h | 2 +-
|
||
src/polkit-agent/auth-polkit.h | 2 +-
|
||
src/polkit-agent/dialog.cpp | 2 +-
|
||
src/polkit-agent/moreinfo-button.cpp | 16 +--
|
||
src/screensaver-dialog/auth-pam.h | 2 +-
|
||
.../checkpass-common/pam-message.cpp | 4 +-
|
||
src/screensaver-dialog/frame.cpp | 10 +-
|
||
src/screensaver-dialog/prefs.cpp | 12 +-
|
||
.../session-guard-checkpass/main.cpp | 30 +++--
|
||
27 files changed, 240 insertions(+), 189 deletions(-)
|
||
|
||
diff --git a/lib/auth-proxy/auth-controller-i.h b/lib/auth-proxy/auth-controller-i.h
|
||
index 3340807..6f75241 100644
|
||
--- a/lib/auth-proxy/auth-controller-i.h
|
||
+++ b/lib/auth-proxy/auth-controller-i.h
|
||
@@ -1,3 +1,16 @@
|
||
+/**
|
||
+ * Copyright (c) 2020 ~ 2024 KylinSec Co., Ltd.
|
||
+ * kiran-session-guard is licensed under Mulan PSL v2.
|
||
+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||
+ * You may obtain a copy of Mulan PSL v2 at:
|
||
+ * http://license.coscl.org.cn/MulanPSL2
|
||
+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||
+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||
+ * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||
+ * See the Mulan PSL v2 for more details.
|
||
+ *
|
||
+ * Author: liuxinhao <liuxinhao@kylinsec.com.cn>
|
||
+ */
|
||
#pragma once
|
||
#include <QString>
|
||
#include "auth-define.h"
|
||
diff --git a/lib/common-widgets/auth-type-drawer.cpp b/lib/common-widgets/auth-type-drawer.cpp
|
||
index bddc5e8..57109ee 100644
|
||
--- a/lib/common-widgets/auth-type-drawer.cpp
|
||
+++ b/lib/common-widgets/auth-type-drawer.cpp
|
||
@@ -1,3 +1,16 @@
|
||
+/**
|
||
+ * Copyright (c) 2020 ~ 2024 KylinSec Co., Ltd.
|
||
+ * kiran-session-guard is licensed under Mulan PSL v2.
|
||
+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||
+ * You may obtain a copy of Mulan PSL v2 at:
|
||
+ * http://license.coscl.org.cn/MulanPSL2
|
||
+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||
+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||
+ * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||
+ * See the Mulan PSL v2 for more details.
|
||
+ *
|
||
+ * Author: liuxinhao <liuxinhao@kylinsec.com.cn>
|
||
+ */
|
||
#include "auth-type-drawer.h"
|
||
#include "style-palette.h"
|
||
|
||
@@ -84,7 +97,7 @@ void AuthTypeDrawer::setAuthTypes(QList<std::tuple<int, QString, QString>> authT
|
||
authButtonInfo.m_icon = icon;
|
||
m_buttonMap[authType] = authButtonInfo;
|
||
}
|
||
-
|
||
+
|
||
updateValidSizeHint();
|
||
|
||
if (m_adjustColorToTheme)
|
||
diff --git a/lib/common-widgets/auth-type-drawer.h b/lib/common-widgets/auth-type-drawer.h
|
||
index 7095773..f6edb79 100644
|
||
--- a/lib/common-widgets/auth-type-drawer.h
|
||
+++ b/lib/common-widgets/auth-type-drawer.h
|
||
@@ -1,3 +1,16 @@
|
||
+/**
|
||
+ * Copyright (c) 2020 ~ 2024 KylinSec Co., Ltd.
|
||
+ * kiran-session-guard is licensed under Mulan PSL v2.
|
||
+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||
+ * You may obtain a copy of Mulan PSL v2 at:
|
||
+ * http://license.coscl.org.cn/MulanPSL2
|
||
+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||
+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||
+ * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||
+ * See the Mulan PSL v2 for more details.
|
||
+ *
|
||
+ * Author: liuxinhao <liuxinhao@kylinsec.com.cn>
|
||
+ */
|
||
#pragma once
|
||
|
||
#include <QWidget>
|
||
diff --git a/lib/common-widgets/auth-type-switcher.cpp b/lib/common-widgets/auth-type-switcher.cpp
|
||
index a1a4470..37ead7d 100644
|
||
--- a/lib/common-widgets/auth-type-switcher.cpp
|
||
+++ b/lib/common-widgets/auth-type-switcher.cpp
|
||
@@ -1,3 +1,16 @@
|
||
+/**
|
||
+ * Copyright (c) 2020 ~ 2024 KylinSec Co., Ltd.
|
||
+ * kiran-session-guard is licensed under Mulan PSL v2.
|
||
+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||
+ * You may obtain a copy of Mulan PSL v2 at:
|
||
+ * http://license.coscl.org.cn/MulanPSL2
|
||
+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||
+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||
+ * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||
+ * See the Mulan PSL v2 for more details.
|
||
+ *
|
||
+ * Author: liuxinhao <liuxinhao@kylinsec.com.cn>
|
||
+ */
|
||
#include "auth-type-switcher.h"
|
||
#include <qt5-log-i.h>
|
||
#include <QDebug>
|
||
@@ -21,9 +34,9 @@ AuthTypeSwitcher::AuthTypeSwitcher(AuthTypeDrawerExpandDirection direction, int
|
||
m_drawer = new AuthTypeDrawer(direction, radius, parent, this);
|
||
connect(m_drawer, &AuthTypeDrawer::authTypeClicked, this, &AuthTypeSwitcher::onAuthTypeChanged);
|
||
// clang-format off
|
||
- connect(m_drawer, &AuthTypeDrawer::expandedStatusChanged, [this](bool expaned){
|
||
+ connect(m_drawer, &AuthTypeDrawer::expandedStatusChanged, [this](bool expaned){
|
||
m_isExpanded = expaned;
|
||
- update();
|
||
+ update();
|
||
});
|
||
// clang-format on
|
||
}
|
||
diff --git a/lib/dbus/com.kylinsec.Kiran.SystemDaemon.Accounts.xml b/lib/dbus/com.kylinsec.Kiran.SystemDaemon.Accounts.xml
|
||
index 2248466..f7cb8f8 100644
|
||
--- a/lib/dbus/com.kylinsec.Kiran.SystemDaemon.Accounts.xml
|
||
+++ b/lib/dbus/com.kylinsec.Kiran.SystemDaemon.Accounts.xml
|
||
@@ -65,14 +65,6 @@
|
||
</arg>
|
||
</method>
|
||
|
||
- <!--<method name="SetGlobalAuthModes">
|
||
- <arg name="auth_modes" direction="in" type="i">
|
||
- <description>Bitwise OR the enabled authorization mode.</description>
|
||
- </arg>>
|
||
- <description>Set the global enabled authentication modes. It will reset to all users using the auth_modes
|
||
- and also use the auth_modes when user is added.</description>
|
||
- </method>-->
|
||
-
|
||
<property name="rsa_public_key" type="s" access="read">
|
||
<description>The RSA public key.</description>
|
||
</property>
|
||
diff --git a/lib/login-frame/login-frame.cpp b/lib/login-frame/login-frame.cpp
|
||
index 1657296..67e54e5 100644
|
||
--- a/lib/login-frame/login-frame.cpp
|
||
+++ b/lib/login-frame/login-frame.cpp
|
||
@@ -280,8 +280,8 @@ void LoginFrame::onShowPrmpt(const QString& text, PromptType type)
|
||
ui->edit->setPlaceHolderText(text);
|
||
m_editMode = EDIT_MODE_PROMPT_RESPOSE;
|
||
ui->edit->setEchoMode(type == PromptTypeSecret ? QLineEdit::Password : QLineEdit::Normal);
|
||
- /// FIXME:需要延时设置输入焦点到输入框,不然又会被置回UserItem
|
||
m_prompted = true;
|
||
+ /// NOTE:需要延时设置输入焦点到输入框,不然又会被置回UserItem
|
||
setEditFocus(200);
|
||
}
|
||
|
||
diff --git a/lib/utils/keyboard-monitor.cpp b/lib/utils/keyboard-monitor.cpp
|
||
index 290d8e4..4b7e89e 100644
|
||
--- a/lib/utils/keyboard-monitor.cpp
|
||
+++ b/lib/utils/keyboard-monitor.cpp
|
||
@@ -26,6 +26,7 @@
|
||
|
||
#include <stdio.h>
|
||
#include <stdlib.h>
|
||
+#include <string.h>
|
||
|
||
namespace Kiran
|
||
{
|
||
@@ -36,61 +37,39 @@ int KeyboardMonitor::getXiMajorVersion(Display *display)
|
||
XExtensionVersion *version;
|
||
static int vers = -1;
|
||
|
||
- if (vers != -1) return vers;
|
||
-
|
||
- version = XGetExtensionVersion(display, INAME);
|
||
-
|
||
- if (version && (version != (XExtensionVersion *)NoSuchExtension))
|
||
+ if (vers != -1)
|
||
{
|
||
- vers = version->major_version;
|
||
- XFree(version);
|
||
+ return vers;
|
||
}
|
||
|
||
- /* Announce our supported version so the server treats us correctly. */
|
||
- if (vers >= XI_2_Major)
|
||
+ version = XGetExtensionVersion(display, INAME);
|
||
+ if (!version || (version == reinterpret_cast<XExtensionVersion *>(NoSuchExtension)))
|
||
{
|
||
- const char *forced_version;
|
||
- int maj = 2, min = 2;
|
||
-
|
||
- forced_version = getenv("XINPUT_XI2_VERSION");
|
||
- if (forced_version)
|
||
- {
|
||
- if (sscanf(forced_version, "%d.%d", &maj, &min) != 2)
|
||
- {
|
||
- fprintf(stderr,
|
||
- "Invalid format of XINPUT_XI2_VERSION "
|
||
- "environment variable. Need major.minor\n");
|
||
- exit(1);
|
||
- }
|
||
- printf("Overriding XI2 version to: %d.%d\n", maj, min);
|
||
- }
|
||
-
|
||
- XIQueryVersion(display, &maj, &min);
|
||
+ vers = 0;
|
||
+ return vers;
|
||
}
|
||
|
||
+ vers = version->major_version;
|
||
+ XFree(version);
|
||
return vers;
|
||
}
|
||
|
||
void KeyboardMonitor::selectEvents(Display *display)
|
||
{
|
||
- XIEventMask m;
|
||
- m.deviceid = XIAllMasterDevices;
|
||
- m.mask_len = XIMaskLen(XI_LASTEVENT);
|
||
- m.mask = (unsigned char *)calloc(m.mask_len, sizeof(char));
|
||
-
|
||
- XISetMask(m.mask, XI_RawKeyRelease);
|
||
- // XISetMask(m.mask, XI_RawKeyPress);
|
||
- // XISetMask(m.mask, XI_RawButtonPress);
|
||
- // XISetMask(m.mask, XI_RawButtonRelease);
|
||
- // XISetMask(m.mask, XI_RawMotion);
|
||
- // XISetMask(m.mask, XI_RawTouchBegin);
|
||
- // XISetMask(m.mask, XI_RawTouchUpdate);
|
||
- // XISetMask(m.mask, XI_RawTouchEnd);
|
||
-
|
||
- XISelectEvents(display, DefaultRootWindow(display), &m, 1);
|
||
-
|
||
- free(m.mask);
|
||
- XSync(display, False);
|
||
+ XIEventMask evmask;
|
||
+ unsigned char mask[XIMaskLen(XI_LASTEVENT)] = {0};
|
||
+
|
||
+ memset(&evmask, 0, sizeof(evmask));
|
||
+ memset(mask, 0, sizeof(mask));
|
||
+
|
||
+ XISetMask(mask, XI_RawKeyRelease);
|
||
+
|
||
+ evmask.deviceid = XIAllMasterDevices;
|
||
+ evmask.mask_len = sizeof(mask);
|
||
+ evmask.mask = mask;
|
||
+
|
||
+ XISelectEvents(display, DefaultRootWindow(display), &evmask, 1);
|
||
+ XFlush(display);
|
||
}
|
||
|
||
int KeyboardMonitor::listenXiEvent(Display *display)
|
||
@@ -118,7 +97,7 @@ int KeyboardMonitor::listenXiEvent(Display *display)
|
||
}
|
||
else if (sym == XKB_KEY_Num_Lock)
|
||
{
|
||
- emit numlockStatusChanged(isNumlockOn());
|
||
+ emit this->numlockStatusChanged(isNumlockOn());
|
||
}
|
||
break;
|
||
}
|
||
diff --git a/lib/utils/scaling-helper.cpp b/lib/utils/scaling-helper.cpp
|
||
index ed051d9..697744e 100644
|
||
--- a/lib/utils/scaling-helper.cpp
|
||
+++ b/lib/utils/scaling-helper.cpp
|
||
@@ -36,8 +36,14 @@ void ScalingHelper::auto_calculate_screen_scaling()
|
||
std::list<double> scaleFactors;
|
||
|
||
display = XOpenDisplay(nullptr);
|
||
- resources = XRRGetScreenResourcesCurrent(display, DefaultRootWindow(display));
|
||
+ if (!display)
|
||
+ {
|
||
+ KLOG_WARNING("auto_calculate_screen_scaling failed,set QT_AUTO_SCREEN_SCALE_FACTOR=1");
|
||
+ qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "1");
|
||
+ return;
|
||
+ }
|
||
|
||
+ resources = XRRGetScreenResourcesCurrent(display, DefaultRootWindow(display));
|
||
if (!resources)
|
||
{
|
||
KLOG_WARNING("XRRGetScreenResourcesCurrent failed,try XRRGetScreenResources");
|
||
@@ -47,81 +53,86 @@ void ScalingHelper::auto_calculate_screen_scaling()
|
||
if (!resources)
|
||
{
|
||
KLOG_WARNING("get screen resources failed");
|
||
- goto failed;
|
||
+ if (display)
|
||
+ {
|
||
+ XCloseDisplay(display);
|
||
+ }
|
||
+ KLOG_WARNING("auto_calculate_screen_scaling failed,set QT_AUTO_SCREEN_SCALE_FACTOR=1");
|
||
+ qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "1");
|
||
+ return;
|
||
}
|
||
|
||
- if (resources)
|
||
+ for (int i = 0; i < resources->noutput; i++)
|
||
{
|
||
- for (int i = 0; i < resources->noutput; i++)
|
||
+ XRROutputInfo *outputInfo = XRRGetOutputInfo(display, resources, resources->outputs[i]);
|
||
+ if (!outputInfo)
|
||
+ {
|
||
+ KLOG_WARNING("get output info %d from resources failed", i);
|
||
+ continue;
|
||
+ }
|
||
+ else if ((outputInfo->crtc == 0) || (outputInfo->mm_width == 0))
|
||
{
|
||
- XRROutputInfo *outputInfo = XRRGetOutputInfo(display, resources, resources->outputs[i]);
|
||
- if (outputInfo->crtc == 0 || outputInfo->mm_width == 0)
|
||
- {
|
||
- if (outputInfo != nullptr)
|
||
- {
|
||
- XRRFreeOutputInfo(outputInfo);
|
||
- }
|
||
- continue;
|
||
- }
|
||
- XRRCrtcInfo *crtInfo = XRRGetCrtcInfo(display, resources, outputInfo->crtc);
|
||
- if (crtInfo == nullptr)
|
||
- {
|
||
- XRRFreeOutputInfo(outputInfo);
|
||
- continue;
|
||
- }
|
||
-
|
||
- // 计算屏幕尺寸
|
||
- qreal screenInch;
|
||
- screenInch = qSqrt(qPow(outputInfo->mm_width, 2.0) + qPow(outputInfo->mm_height, 2.0)) / qreal(25.4);
|
||
-
|
||
- // 计算ppi
|
||
- qreal hypotenusePixel = qSqrt(qPow(crtInfo->width, 2.0) + qPow(crtInfo->height, 2.0));
|
||
- qreal ppi = hypotenusePixel / screenInch;
|
||
-
|
||
- KLOG_INFO() << "Screen:" << outputInfo->name;
|
||
- KLOG_INFO() << " physical size: " << outputInfo->mm_width << "x" << outputInfo->mm_height;
|
||
- KLOG_INFO() << " virtual size: " << crtInfo->width << crtInfo->height;
|
||
- KLOG_INFO() << " inch: " << screenInch;
|
||
- KLOG_INFO() << " ppi: " << ppi;
|
||
-
|
||
- double screen_scale_factor = 1.0;
|
||
- if (ppi >= 150 && ppi < 196)
|
||
- {
|
||
- screen_scale_factor = 1.5;
|
||
- }
|
||
- else if (ppi >= 196)
|
||
- {
|
||
- screen_scale_factor = 2.0;
|
||
- }
|
||
- else if (crtInfo->width >= 4096)
|
||
- {
|
||
- screen_scale_factor = 2.0;
|
||
- }
|
||
- scaleFactors.push_back(screen_scale_factor);
|
||
- XRRFreeCrtcInfo(crtInfo);
|
||
+ KLOG_WARNING("ignore crtc==0 or mm_width==0 output");
|
||
XRRFreeOutputInfo(outputInfo);
|
||
+ continue;
|
||
+ }
|
||
+
|
||
+ XRRCrtcInfo *crtInfo = XRRGetCrtcInfo(display, resources, outputInfo->crtc);
|
||
+ if (crtInfo == nullptr)
|
||
+ {
|
||
+ KLOG_WARNING("ignore crtcinfo==null output");
|
||
+ XRRFreeOutputInfo(outputInfo);
|
||
+ continue;
|
||
+ }
|
||
+
|
||
+ // 计算屏幕尺寸
|
||
+ qreal screenInch;
|
||
+ screenInch = qSqrt(qPow(outputInfo->mm_width, 2.0) + qPow(outputInfo->mm_height, 2.0)) / qreal(25.4);
|
||
+
|
||
+ // 计算ppi
|
||
+ qreal hypotenusePixel = qSqrt(qPow(crtInfo->width, 2.0) + qPow(crtInfo->height, 2.0));
|
||
+ qreal ppi = hypotenusePixel / screenInch;
|
||
+
|
||
+ KLOG_INFO() << "Screen:" << outputInfo->name;
|
||
+ KLOG_INFO() << " physical size: " << outputInfo->mm_width << "x" << outputInfo->mm_height;
|
||
+ KLOG_INFO() << " virtual size: " << crtInfo->width << crtInfo->height;
|
||
+ KLOG_INFO() << " inch: " << screenInch;
|
||
+ KLOG_INFO() << " ppi: " << ppi;
|
||
+
|
||
+ double screen_scale_factor = 1.0;
|
||
+ if (ppi >= 150 && ppi < 196)
|
||
+ {
|
||
+ screen_scale_factor = 1.5;
|
||
+ }
|
||
+ else if (ppi >= 196)
|
||
+ {
|
||
+ screen_scale_factor = 2.0;
|
||
+ }
|
||
+ else if (crtInfo->width >= 4096)
|
||
+ {
|
||
+ screen_scale_factor = 2.0;
|
||
}
|
||
- XRRFreeScreenResources(resources);
|
||
+ scaleFactors.push_back(screen_scale_factor);
|
||
+
|
||
+ XRRFreeCrtcInfo(crtInfo);
|
||
+ XRRFreeOutputInfo(outputInfo);
|
||
}
|
||
+ XRRFreeScreenResources(resources);
|
||
XCloseDisplay(display);
|
||
+
|
||
if (scaleFactors.size())
|
||
{
|
||
scaleFactors.sort();
|
||
scale_factor = *scaleFactors.begin();
|
||
}
|
||
+
|
||
KLOG_INFO() << "QT_SCALE_FACTOR:" << scale_factor;
|
||
if (!qputenv("QT_SCALE_FACTOR", QString::number(scale_factor).toUtf8()))
|
||
{
|
||
KLOG_WARNING() << "set scale factor failed.";
|
||
}
|
||
+
|
||
return;
|
||
-failed:
|
||
- if (display)
|
||
- {
|
||
- XCloseDisplay(display);
|
||
- }
|
||
- KLOG_WARNING("auto_calculate_screen_scaling failed,set QT_AUTO_SCREEN_SCALE_FACTOR=1");
|
||
- qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "1");
|
||
}
|
||
|
||
} // namespace SessionGuard
|
||
diff --git a/lib/utils/virtual-keyboard.h b/lib/utils/virtual-keyboard.h
|
||
index 09bbc37..4670105 100644
|
||
--- a/lib/utils/virtual-keyboard.h
|
||
+++ b/lib/utils/virtual-keyboard.h
|
||
@@ -44,8 +44,8 @@ private slots:
|
||
void slotReadyReadStandardOutput();
|
||
|
||
private:
|
||
- QWidget *m_keyboardWidget;
|
||
- QProcess *m_process;
|
||
+ QWidget *m_keyboardWidget = nullptr;
|
||
+ QProcess *m_process = nullptr;
|
||
QWidget *m_keyboardEmbed = nullptr;
|
||
};
|
||
} // namespace SessionGuard
|
||
diff --git a/src/lightdm-greeter/common/prefs.cpp b/src/lightdm-greeter/common/prefs.cpp
|
||
index 91d7072..82891b4 100644
|
||
--- a/src/lightdm-greeter/common/prefs.cpp
|
||
+++ b/src/lightdm-greeter/common/prefs.cpp
|
||
@@ -51,31 +51,31 @@ void Prefs::init()
|
||
/// common
|
||
settings.beginGroup("Common");
|
||
|
||
- auto hiddenSession = settings.value("hidden-sessions");
|
||
+ auto hiddenSession = settings.value("hidden-sessions","");
|
||
m_hiddenSessions = hiddenSession.toStringList();
|
||
|
||
- auto hiddenUsers = settings.value("hide-users");
|
||
- m_hiddenUsers = hiddenUsers.toStringList();
|
||
+ auto needHideUsers = settings.value("hide-users","");
|
||
+ m_hiddenUsers = needHideUsers.toStringList();
|
||
|
||
- auto numlockInitState = settings.value("numlock-init-state");
|
||
- m_numlockInitState = numlockInitState.toBool();
|
||
+ auto numInitState = settings.value("numlock-init-state");
|
||
+ m_numlockInitState = numInitState.toBool();
|
||
|
||
settings.endGroup();
|
||
|
||
/// power
|
||
settings.beginGroup("Power");
|
||
|
||
- auto canPowerOff = settings.value("can-poweroff");
|
||
- m_canPowerOff = canPowerOff.toBool();
|
||
+ auto powerOffEnable = settings.value("can-poweroff");
|
||
+ m_canPowerOff = powerOffEnable.toBool();
|
||
|
||
- auto canReboot = settings.value("can-reboot");
|
||
- m_canReboot = canReboot.toBool();
|
||
+ auto rebootEnable = settings.value("can-reboot");
|
||
+ m_canReboot = rebootEnable.toBool();
|
||
|
||
- auto canSuspend = settings.value("can-suspend");
|
||
- m_canSuspend = canSuspend.toBool();
|
||
+ auto suspendEnable = settings.value("can-suspend");
|
||
+ m_canSuspend = suspendEnable.toBool();
|
||
|
||
- auto canHibernate = settings.value("can-hibernate");
|
||
- m_canHibernate = canHibernate.toBool();
|
||
+ auto hibernateEnable = settings.value("can-hibernate");
|
||
+ m_canHibernate = hibernateEnable.toBool();
|
||
}
|
||
|
||
Prefs::~Prefs()
|
||
diff --git a/src/lightdm-greeter/frame.cpp b/src/lightdm-greeter/frame.cpp
|
||
index 3d8dada..e4afcb9 100644
|
||
--- a/src/lightdm-greeter/frame.cpp
|
||
+++ b/src/lightdm-greeter/frame.cpp
|
||
@@ -110,7 +110,7 @@ void Frame::initMenus()
|
||
auto setMenuAttributes = [](QMenu* menu)
|
||
{
|
||
menu->setAttribute(Qt::WA_TranslucentBackground); // 透明必需
|
||
- // FIXME:QMenu不能为窗口,只能为控件,不然透明效果依赖于窗口管理器混成特效与显卡
|
||
+ // NOTE:QMenu不能为窗口,只能为控件,不然透明效果依赖于窗口管理器混成特效与显卡
|
||
// 控件的话QMenu显示出来的话,不能点击其他区域隐藏窗口,需要手动隐藏
|
||
menu->setWindowFlags(Qt::FramelessWindowHint | Qt::Widget); // 透明必需
|
||
menu->setContentsMargins(0, 0, 0, 0);
|
||
@@ -165,7 +165,7 @@ void Frame::initUI()
|
||
{
|
||
resize(1024, 768);
|
||
|
||
- /// FIXME:因弹出窗口不是作为新的窗口,而是作为一个控件,需要我们去做隐藏
|
||
+ /// NOTE:因弹出窗口不是作为新的窗口,而是作为一个控件,需要我们去做隐藏
|
||
/// 开始监听整个应用程序事件,在窗口点击事件中判断隐藏菜单
|
||
qApp->installEventFilter(this);
|
||
|
||
@@ -205,7 +205,7 @@ void Frame::initUI()
|
||
|
||
// 初始化添加右下控件
|
||
// 获取菜单弹出坐标,按钮和触发菜单右对齐
|
||
- // FIXME: Qt在特定虚拟机环境下QMenu::popup传入正确的pos时,QMenu通过Pos找到screen,但screen的大小错误(为调整分辨率之前的分辨率)
|
||
+ // NOTE: Qt在特定虚拟机环境下QMenu::popup传入正确的pos时,QMenu通过Pos找到screen,但screen的大小错误(为调整分辨率之前的分辨率)
|
||
// 导致popup pos被修改成在错误的屏幕范围内
|
||
auto getMenuPopupPos = [this](QMenu* menu, const QToolButton* triggerBtn) -> QPoint
|
||
{
|
||
diff --git a/src/lightdm-greeter/kiran-cpanel-greeter/main.cpp b/src/lightdm-greeter/kiran-cpanel-greeter/main.cpp
|
||
index eeffb39..96567b7 100644
|
||
--- a/src/lightdm-greeter/kiran-cpanel-greeter/main.cpp
|
||
+++ b/src/lightdm-greeter/kiran-cpanel-greeter/main.cpp
|
||
@@ -1,3 +1,16 @@
|
||
+/**
|
||
+ * Copyright (c) 2020 ~ 2024 KylinSec Co., Ltd.
|
||
+ * kiran-session-guard is licensed under Mulan PSL v2.
|
||
+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||
+ * You may obtain a copy of Mulan PSL v2 at:
|
||
+ * http://license.coscl.org.cn/MulanPSL2
|
||
+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||
+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||
+ * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||
+ * See the Mulan PSL v2 for more details.
|
||
+ *
|
||
+ * Author: liuxinhao <liuxinhao@kylinsec.com.cn>
|
||
+ */
|
||
#include <QApplication>
|
||
|
||
int main(int argc, char* argv[])
|
||
diff --git a/src/lightdm-greeter/kiran-cpanel-greeter/setting-window.cpp b/src/lightdm-greeter/kiran-cpanel-greeter/setting-window.cpp
|
||
index 5c3fd15..45c9fb9 100644
|
||
--- a/src/lightdm-greeter/kiran-cpanel-greeter/setting-window.cpp
|
||
+++ b/src/lightdm-greeter/kiran-cpanel-greeter/setting-window.cpp
|
||
@@ -435,7 +435,6 @@ void SettingWindow::initUserComboBox(QComboBox *combo)
|
||
iconFile.clear();
|
||
}
|
||
};
|
||
- QVector<UserInfo> userInfoVector;
|
||
|
||
QStringList users = UserManager::getCachedUsers();
|
||
users.append("root");
|
||
diff --git a/src/lightdm-greeter/term-signal-handler.cpp b/src/lightdm-greeter/term-signal-handler.cpp
|
||
index 5375d19..646c7e1 100644
|
||
--- a/src/lightdm-greeter/term-signal-handler.cpp
|
||
+++ b/src/lightdm-greeter/term-signal-handler.cpp
|
||
@@ -22,7 +22,7 @@
|
||
#include <QApplication>
|
||
#include <QSocketNotifier>
|
||
|
||
-//FIXME:该种方式退出时,可能会有线程阻塞在xcb_wait_for_reply
|
||
+//TODO:该种方式退出时,可能会有线程阻塞在xcb_wait_for_reply
|
||
namespace Kiran
|
||
{
|
||
namespace SessionGuard
|
||
diff --git a/src/lightdm-greeter/widgets/disabledeselectlistwidget.cpp b/src/lightdm-greeter/widgets/disabledeselectlistwidget.cpp
|
||
index c2f0190..e6a7962 100644
|
||
--- a/src/lightdm-greeter/widgets/disabledeselectlistwidget.cpp
|
||
+++ b/src/lightdm-greeter/widgets/disabledeselectlistwidget.cpp
|
||
@@ -31,24 +31,27 @@ DisableDeselectListWidget::DisableDeselectListWidget(QWidget *parent)
|
||
QItemSelectionModel::SelectionFlags
|
||
DisableDeselectListWidget::selectionCommand(const QModelIndex &index, const QEvent *event) const
|
||
{
|
||
- //FIXME:为了避免一些环境下会出现ItemFocus直接设置选中的情况
|
||
+ // NOTE:为了避免一些环境下会出现ItemFocus直接设置选中的情况
|
||
if (event == nullptr)
|
||
{
|
||
return QItemSelectionModel::NoUpdate;
|
||
}
|
||
- //禁用用户按住鼠标切换用户情况
|
||
+
|
||
+ // 禁用用户按住鼠标切换用户情况
|
||
if (event->type() == QEvent::MouseMove)
|
||
{
|
||
return QItemSelectionModel::NoUpdate;
|
||
}
|
||
- if ((event != nullptr) && (event->type() == QEvent::MouseButtonPress))
|
||
+
|
||
+ if ((event->type() == QEvent::MouseButtonPress))
|
||
{
|
||
- const QMouseEvent *mouseEvent = (QMouseEvent *)event;
|
||
+ const QMouseEvent *mouseEvent = static_cast<const QMouseEvent *>(event);
|
||
if ((mouseEvent->modifiers() & Qt::ControlModifier) != 0)
|
||
{
|
||
return QItemSelectionModel::NoUpdate;
|
||
}
|
||
}
|
||
+
|
||
return QListWidget::selectionCommand(index, event);
|
||
}
|
||
|
||
diff --git a/src/lightdm-greeter/widgets/login-button.cpp b/src/lightdm-greeter/widgets/login-button.cpp
|
||
index 428f18d..63f9367 100644
|
||
--- a/src/lightdm-greeter/widgets/login-button.cpp
|
||
+++ b/src/lightdm-greeter/widgets/login-button.cpp
|
||
@@ -24,9 +24,10 @@ namespace SessionGuard
|
||
{
|
||
namespace Greeter
|
||
{
|
||
-LoginButton::LoginButton(QWidget *parent) : QWidget(parent),
|
||
- ui(new Ui::LoginButton),
|
||
- m_pressed(false)
|
||
+LoginButton::LoginButton(QWidget *parent)
|
||
+ : QWidget(parent),
|
||
+ ui(new Ui::LoginButton),
|
||
+ m_pressed(false)
|
||
{
|
||
ui->setupUi(this);
|
||
ui->label_text->setText(tr("login"));
|
||
diff --git a/src/lightdm-greeter/widgets/user-info.h b/src/lightdm-greeter/widgets/user-info.h
|
||
index c7ca0d2..0aceaa8 100644
|
||
--- a/src/lightdm-greeter/widgets/user-info.h
|
||
+++ b/src/lightdm-greeter/widgets/user-info.h
|
||
@@ -24,6 +24,8 @@ namespace Greeter
|
||
{
|
||
struct UserInfo
|
||
{
|
||
+ UserInfo():uid(0),hasMessage(false),loggedIn(false)
|
||
+ {};
|
||
QString name;
|
||
QString realName;
|
||
QString session;
|
||
diff --git a/src/lightdm-greeter/widgets/user-list.cpp b/src/lightdm-greeter/widgets/user-list.cpp
|
||
index e59fa8b..1b9be4b 100644
|
||
--- a/src/lightdm-greeter/widgets/user-list.cpp
|
||
+++ b/src/lightdm-greeter/widgets/user-list.cpp
|
||
@@ -281,8 +281,9 @@ QString UserList::getIconByUserName(const QString &userName)
|
||
UserInfo UserList::getUserInfoByUserName(const QString &userName)
|
||
{
|
||
UserInfo info;
|
||
+ int rowCout = m_filterModel.rowCount(QModelIndex());
|
||
|
||
- for (int i = 0; i < m_filterModel.rowCount(QModelIndex()); i++)
|
||
+ for (int i = 0; i < rowCout; i++)
|
||
{
|
||
UserInfo userInfo;
|
||
getUserInfoFromModel(i, userInfo);
|
||
@@ -339,10 +340,10 @@ void UserList::onModelRowsRemoved(const QModelIndex &parent, int first, int last
|
||
const QString userName = item->text();
|
||
QListWidgetItem *removedItem = ui->userList->takeItem(i);
|
||
delete removedItem;
|
||
- emit userRemoved(userName);
|
||
+ emit this->userRemoved(userName);
|
||
}
|
||
int newCount = userCount();
|
||
- emit userCountChanged(oldCount, newCount);
|
||
+ emit this->userCountChanged(oldCount, newCount);
|
||
updateGeometry();
|
||
}
|
||
|
||
@@ -359,7 +360,7 @@ void UserList::onModelRowsInserted(const QModelIndex &parent, int first, int las
|
||
KLOG_DEBUG() << "row inserted: "
|
||
<< "cout[" << ui->userList->count() << "]";
|
||
updateGeometry();
|
||
- emit userCountChanged(oldCount, newCount);
|
||
+ emit this->userCountChanged(oldCount, newCount);
|
||
}
|
||
|
||
void UserList::onAppFocusChanged(QWidget *oldFocus, QWidget *newFocus)
|
||
@@ -409,10 +410,10 @@ void UserList::onDataChanged(const QModelIndex &topLeft,
|
||
break;
|
||
}
|
||
};
|
||
- int startRow = topLeft.row();
|
||
- int endRow = topLeft.row();
|
||
|
||
- // FIXME: QLightdDM此处信号发出时roles为默认参数, 无法判断数据变化范围
|
||
+ int startRow = topLeft.row();
|
||
+ int endRow = bottomRight.row();
|
||
+ // NOTE: QLightdDM此处信号发出时roles为默认参数, 无法判断数据变化范围
|
||
// 检查图片更新,用户列表中的顺序可能和用户不一致
|
||
for (int i = startRow; i <= endRow; i++)
|
||
{
|
||
diff --git a/src/lightdm-greeter/widgets/user-list.h b/src/lightdm-greeter/widgets/user-list.h
|
||
index e58b39c..32730cc 100644
|
||
--- a/src/lightdm-greeter/widgets/user-list.h
|
||
+++ b/src/lightdm-greeter/widgets/user-list.h
|
||
@@ -64,7 +64,7 @@ private slots:
|
||
void onAppFocusChanged(QWidget* oldFocus,QWidget* newFocus);
|
||
void onDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> roles);
|
||
|
||
-Q_SIGNALS:
|
||
+signals:
|
||
void userActivated(const UserInfo &userInfo);
|
||
void userCountChanged(int oldCount, int newCount);
|
||
void userRemoved(const QString &userName);
|
||
diff --git a/src/polkit-agent/auth-polkit.h b/src/polkit-agent/auth-polkit.h
|
||
index 063a964..2b3cb91 100644
|
||
--- a/src/polkit-agent/auth-polkit.h
|
||
+++ b/src/polkit-agent/auth-polkit.h
|
||
@@ -59,7 +59,7 @@ private slots:
|
||
void handleSessionShowInfo(const QString& text);
|
||
|
||
private:
|
||
- AuthControllerInterface* m_controllerInterface;
|
||
+ AuthControllerInterface* m_controllerInterface = nullptr;
|
||
QString m_cookie;
|
||
PolkitQt1::Agent::Session* m_session = nullptr;
|
||
PolkitQt1::Identity m_identity;
|
||
diff --git a/src/polkit-agent/dialog.cpp b/src/polkit-agent/dialog.cpp
|
||
index 6094a71..460e834 100644
|
||
--- a/src/polkit-agent/dialog.cpp
|
||
+++ b/src/polkit-agent/dialog.cpp
|
||
@@ -247,7 +247,7 @@ void Dialog::onAuthComplete(bool success)
|
||
{
|
||
if (m_authController->isAuthenticated())
|
||
{
|
||
- emit completed(true);
|
||
+ emit this->completed(true);
|
||
this->close();
|
||
return;
|
||
}
|
||
diff --git a/src/polkit-agent/moreinfo-button.cpp b/src/polkit-agent/moreinfo-button.cpp
|
||
index 9415f11..babdac2 100644
|
||
--- a/src/polkit-agent/moreinfo-button.cpp
|
||
+++ b/src/polkit-agent/moreinfo-button.cpp
|
||
@@ -27,17 +27,13 @@ namespace SessionGuard
|
||
namespace PolkitAgent
|
||
{
|
||
MoreInfoButton::MoreInfoButton(QWidget* parent)
|
||
- : QWidget(parent)
|
||
+ : QWidget(parent),
|
||
+ m_expandPix(style()->standardPixmap(QStyle::SP_ArrowUp)),
|
||
+ m_shrinkPix(style()->standardPixmap(QStyle::SP_ArrowRight)),
|
||
+ m_iconSize(QSize(16, 16)),
|
||
+ m_text(QString("more info"))
|
||
{
|
||
- m_shrinkPix = style()->standardPixmap(QStyle::SP_ArrowRight);
|
||
- m_expandPix = style()->standardPixmap(QStyle::SP_ArrowUp);
|
||
-
|
||
- m_iconSize = QSize(16, 16);
|
||
-
|
||
- // m_shrinkPix = m_shrinkPix.scaled(m_iconSize,Qt::KeepAspectRatio,Qt::SmoothTransformation);
|
||
- // m_expandPix = m_expandPix.scaled(m_iconSize,Qt::KeepAspectRatio,Qt::SmoothTransformation);
|
||
-
|
||
- setText("more info");
|
||
+ setText(m_text);
|
||
}
|
||
|
||
MoreInfoButton::~MoreInfoButton()
|
||
diff --git a/src/screensaver-dialog/auth-pam.h b/src/screensaver-dialog/auth-pam.h
|
||
index 210ad6f..99e0bb5 100644
|
||
--- a/src/screensaver-dialog/auth-pam.h
|
||
+++ b/src/screensaver-dialog/auth-pam.h
|
||
@@ -60,7 +60,7 @@ private:
|
||
void handleChildExit();
|
||
|
||
private:
|
||
- AuthControllerInterface* m_interface;
|
||
+ AuthControllerInterface* m_interface = nullptr;
|
||
QString m_userName;
|
||
|
||
bool m_isAuthenticated = false;
|
||
diff --git a/src/screensaver-dialog/checkpass-common/pam-message.cpp b/src/screensaver-dialog/checkpass-common/pam-message.cpp
|
||
index 3cd50f5..76fce7f 100644
|
||
--- a/src/screensaver-dialog/checkpass-common/pam-message.cpp
|
||
+++ b/src/screensaver-dialog/checkpass-common/pam-message.cpp
|
||
@@ -43,12 +43,12 @@ bool kiran_pam_message_send(int fd, QJsonDocument& content)
|
||
QByteArray qByteArray = content.toJson();
|
||
uint32_t contentLength = qByteArray.length();
|
||
|
||
- if (sendStream.writeRawData((const char*)&contentLength, sizeof(contentLength)) == -1)
|
||
+ if (sendStream.writeRawData(reinterpret_cast<const char*>(&contentLength), sizeof(contentLength)) == -1)
|
||
{
|
||
return false;
|
||
}
|
||
|
||
- if (sendStream.writeRawData((const char*)qByteArray.data(), qByteArray.length()) == -1)
|
||
+ if (sendStream.writeRawData(const_cast<const char*>(qByteArray.data()), qByteArray.length()) == -1)
|
||
{
|
||
return false;
|
||
}
|
||
diff --git a/src/screensaver-dialog/frame.cpp b/src/screensaver-dialog/frame.cpp
|
||
index 590c19d..73f50dc 100644
|
||
--- a/src/screensaver-dialog/frame.cpp
|
||
+++ b/src/screensaver-dialog/frame.cpp
|
||
@@ -50,9 +50,9 @@ Frame::Frame(Kiran::ScreenSaver::Interface* ksinterface, Power* power, QWidget*
|
||
m_power(power),
|
||
m_keyboard(nullptr),
|
||
m_ksInterface(ksinterface),
|
||
+ m_userName(UserManager::getCurrentUser()),
|
||
m_authProxy(nullptr)
|
||
{
|
||
- m_userName = UserManager::getCurrentUser();
|
||
KLOG_DEBUG() << "locker create for" << m_userName;
|
||
initMenus();
|
||
initUI();
|
||
@@ -102,9 +102,9 @@ void Frame::initUI()
|
||
{
|
||
// 初始化添加右下控件
|
||
// 获取菜单弹出坐标,按钮和触发菜单右对齐
|
||
- // FIXME: Qt在特定虚拟机环境下QMenu::popup传入正确的pos时,QMenu通过Pos找到screen,但screen的大小错误(为调整分辨率之前的分辨率)
|
||
+ // NOTE: Qt在特定虚拟机环境下QMenu::popup传入正确的pos时,QMenu通过Pos找到screen,但screen的大小错误(为调整分辨率之前的分辨率)
|
||
// 导致popup pos被修改成在错误的屏幕范围内
|
||
- auto getMenuPopupPos = [this](QMenu* menu, const QToolButton* triggerBtn) -> QPoint
|
||
+ auto getMenuPopupPos = [](QMenu* menu, const QToolButton* triggerBtn) -> QPoint
|
||
{
|
||
QSize menuSize = menu->actions().count() == 0 ? QSize(92, 10) : menu->sizeHint();
|
||
QPoint btnRightTopPos = triggerBtn->mapToGlobal(QPoint(triggerBtn->width(), 0));
|
||
@@ -137,7 +137,7 @@ void Frame::initUI()
|
||
};
|
||
|
||
// clang-format off
|
||
- m_btnSwitchToGreeter = createActionButton("btn_switchuser", tr("switch to greeter"), [](){
|
||
+ m_btnSwitchToGreeter = createActionButton("btn_switchuser", tr("switch to greeter"), [](){
|
||
KLOG_DEBUG() << "switch to greeter clicked";
|
||
UserManager::switchToGreeter();
|
||
});
|
||
@@ -159,7 +159,7 @@ void Frame::initUI()
|
||
return;
|
||
}
|
||
QPoint pos = getMenuPopupPos(m_powerMenu,m_btnPower);
|
||
- m_powerMenu->popup(pos);
|
||
+ m_powerMenu->popup(pos);
|
||
});
|
||
// clang-format on
|
||
|
||
diff --git a/src/screensaver-dialog/prefs.cpp b/src/screensaver-dialog/prefs.cpp
|
||
index 2e12e91..65fb565 100644
|
||
--- a/src/screensaver-dialog/prefs.cpp
|
||
+++ b/src/screensaver-dialog/prefs.cpp
|
||
@@ -33,14 +33,14 @@ void Prefs::init()
|
||
///power
|
||
settings.beginGroup("Power");
|
||
|
||
- auto canPowerOff = settings.value("can-poweroff");
|
||
- m_canPowerOff = canPowerOff.toBool();
|
||
+ auto powerOffEnable = settings.value("can-poweroff");
|
||
+ m_canPowerOff = powerOffEnable.toBool();
|
||
|
||
- auto canReboot = settings.value("can-reboot");
|
||
- m_canReboot = canReboot.toBool();
|
||
+ auto rebootEnable = settings.value("can-reboot");
|
||
+ m_canReboot = rebootEnable.toBool();
|
||
|
||
- auto canSuspend = settings.value("can-suspend");
|
||
- m_canSuspend = canSuspend.toBool();
|
||
+ auto suspendEnable = settings.value("can-suspend");
|
||
+ m_canSuspend = suspendEnable.toBool();
|
||
}
|
||
|
||
Prefs::~Prefs()
|
||
diff --git a/src/screensaver-dialog/session-guard-checkpass/main.cpp b/src/screensaver-dialog/session-guard-checkpass/main.cpp
|
||
index 9bad98d..30e8d91 100644
|
||
--- a/src/screensaver-dialog/session-guard-checkpass/main.cpp
|
||
+++ b/src/screensaver-dialog/session-guard-checkpass/main.cpp
|
||
@@ -33,7 +33,7 @@ int conversation(int num_msg, const pam_message **msgs, pam_response **resp, voi
|
||
struct pam_response *reply = NULL;
|
||
char *username = nullptr;
|
||
|
||
- reply = (struct pam_response *)calloc(num_msg, sizeof(*reply));
|
||
+ reply = static_cast<pam_response *>(calloc(num_msg, sizeof(pam_response)));
|
||
if (reply == nullptr)
|
||
{
|
||
KLOG_ERROR() << "can't malloc memory for replies,return PAM_CONV_ERR";
|
||
@@ -56,14 +56,14 @@ int conversation(int num_msg, const pam_message **msgs, pam_response **resp, voi
|
||
|
||
if (!kiran_pam_message_send_event(CHANNEL_WRITE, &event))
|
||
{
|
||
- //发送消息失败
|
||
+ // 发送消息失败
|
||
KLOG_DEBUG() << "send pam message to parent process failed!";
|
||
replyRet = PAM_CONV_ERR;
|
||
}
|
||
else
|
||
{
|
||
PamEvent *recvReply = nullptr;
|
||
- //接收消息失败
|
||
+ // 接收消息失败
|
||
if (!kiran_pam_message_recv_event(CHANNEL_READ, &recvReply))
|
||
{
|
||
KLOG_ERROR() << "recv pam prompt reply failed";
|
||
@@ -71,7 +71,7 @@ int conversation(int num_msg, const pam_message **msgs, pam_response **resp, voi
|
||
}
|
||
else
|
||
{
|
||
- //消息类型不正确
|
||
+ // 消息类型不正确
|
||
if (recvReply->type() != PamEvent::PromptReply)
|
||
{
|
||
KLOG_ERROR() << "recv event is not reply!";
|
||
@@ -80,8 +80,8 @@ int conversation(int num_msg, const pam_message **msgs, pam_response **resp, voi
|
||
else
|
||
{
|
||
auto replyEvent = dynamic_cast<PromptReplyEvent *>(recvReply);
|
||
- //KLOG_DEBUG() << "recv prompt reply:" << replyEvent->result() << replyEvent->text();
|
||
- //消息返回失败
|
||
+ // KLOG_DEBUG() << "recv prompt reply:" << replyEvent->result() << replyEvent->text();
|
||
+ // 消息返回失败
|
||
if (!replyEvent->result())
|
||
{
|
||
replyRet = PAM_CONV_ERR;
|
||
@@ -89,8 +89,10 @@ int conversation(int num_msg, const pam_message **msgs, pam_response **resp, voi
|
||
else
|
||
{
|
||
reply[i].resp_retcode = PAM_SUCCESS;
|
||
- reply[i].resp = (char *)calloc(1, replyEvent->text().length() + 1);
|
||
- strcpy(reply[i].resp, replyEvent->text().toStdString().c_str());
|
||
+ reply[i].resp = static_cast<char *>(calloc(1, replyEvent->text().length() + 1));
|
||
+ strncpy(reply[i].resp,
|
||
+ replyEvent->text().toStdString().c_str(),
|
||
+ replyEvent->text().length());
|
||
}
|
||
}
|
||
}
|
||
@@ -103,7 +105,7 @@ int conversation(int num_msg, const pam_message **msgs, pam_response **resp, voi
|
||
MessageEvent messageEvent(msg->msg_style == PAM_ERROR_MSG, msg->msg);
|
||
if (!kiran_pam_message_send_event(CHANNEL_WRITE, &messageEvent))
|
||
{
|
||
- //发送消息失败
|
||
+ // 发送消息失败
|
||
KLOG_DEBUG() << "send pam message to parent process failed!";
|
||
replyRet = PAM_CONV_ERR;
|
||
}
|
||
@@ -141,7 +143,7 @@ int main(int argc, char *argv[])
|
||
"kiran-screensaver-dialog",
|
||
"kiran-session-guard-checkpass");
|
||
|
||
- ///判断参数合法性
|
||
+ /// 判断参数合法性
|
||
if (argc != 3)
|
||
{
|
||
KLOG_ERROR() << "usage: pam-authproxy-checkpass READFD WRITEFD USERNAME";
|
||
@@ -172,8 +174,8 @@ int main(int argc, char *argv[])
|
||
return EXIT_FAILURE;
|
||
}
|
||
|
||
- ///安全性
|
||
- //可以参考lightdm session-child
|
||
+ /// 安全性
|
||
+ // 可以参考lightdm session-child
|
||
/* Protect memory from being paged to disk, as we deal with passwords */
|
||
mlockall(MCL_CURRENT | MCL_FUTURE);
|
||
|
||
@@ -187,7 +189,7 @@ int main(int argc, char *argv[])
|
||
<< "\t write fd: " << CHANNEL_WRITE << "\n"
|
||
<< "\t authproxy user name:" << userName;
|
||
|
||
- ///开始pam认证
|
||
+ /// 开始pam认证
|
||
// clang-format off
|
||
struct pam_conv conv = {
|
||
.conv = &conversation,
|
||
@@ -201,7 +203,7 @@ int main(int argc, char *argv[])
|
||
KLOG_WARNING() << "failed to start pam:" << pam_strerror(pamh, ret);
|
||
return EXIT_FAILURE;
|
||
}
|
||
-
|
||
+
|
||
int authRes = PAM_SUCCESS;
|
||
authRes = pam_authenticate(pamh, 0);
|
||
const char *newUserName;
|
||
--
|
||
2.27.0
|
||
|