diff --git a/bioauth/src/loginoptionswidget.cpp b/bioauth/src/loginoptionswidget.cpp index 445592c..24cf58c 100644 --- a/bioauth/src/loginoptionswidget.cpp +++ b/bioauth/src/loginoptionswidget.cpp @@ -150,7 +150,10 @@ unsigned LoginOptionsWidget::getLoginOptCount() DeviceInfoPtr LoginOptionsWidget::getFirstDevInfo() { DeviceInfoPtr devInfo = nullptr; - int nDrvId = m_bioDevices->GetLastDevice(getpwuid(getuid())->pw_name); + struct passwd* pwdInfo = getpwuid(m_uid); + if (!pwdInfo) + return devInfo; + int nDrvId = m_bioDevices->GetLastDevice(pwdInfo->pw_name); if (nDrvId >= 0) { qDebug()<<"GetLastDevice:"<device_id; this->m_curDevInfo = device; this->m_uid = uid; - this->m_strUserName = getpwuid(uid)->pw_name; + struct passwd *pwdInfo = getpwuid(uid); + if (pwdInfo) { + this->m_strUserName = pwdInfo->pw_name; + } this->m_isStopped = false; this->m_curLoginOptType = convertDeviceType(this->m_curDevInfo->biotype); updateUIStatus(true); - m_bioDevices->SetLastDevice(getpwuid(getuid())->pw_name, this->m_curDevInfo->device_id); + if (pwdInfo) { + m_bioDevices->SetLastDevice(pwdInfo->pw_name, this->m_curDevInfo->device_id); + } startAuth_(); } diff --git a/polkit-agent/src/mainwindow.cpp b/polkit-agent/src/mainwindow.cpp index 850a82a..05a5db0 100644 --- a/polkit-agent/src/mainwindow.cpp +++ b/polkit-agent/src/mainwindow.cpp @@ -259,7 +259,7 @@ void MainWindow::onConfigurationChanged(QString key) void MainWindow::restart_bio_identify() { - DeviceInfoPtr device = bioDevices.getDefaultDevice(getuid()); + DeviceInfoPtr device = bioDevices.getDefaultDevice(getUid(userName)); if(device){ m_loginOptsWidget->startAuth(device, getUid(userName)); setMessage(tr("Please enter your password or enroll your fingerprint ")); @@ -744,7 +744,7 @@ void MainWindow::switchAuthMode(Mode mode) ui->btnBioAuth->hide(); // if(enableBioAuth && useDoubleAuth){ - // DeviceInfoPtr device = bioDevices.getDefaultDevice(getuid()); + // DeviceInfoPtr device = bioDevices.getDefaultDevice(getUid(userName)); // if(device){ // widgetBioAuth->startAuth(getUid(userName), device); // } @@ -769,7 +769,7 @@ void MainWindow::switchAuthMode(Mode mode) emit accept(BIOMETRIC_IGNORE); return; } else if(authMode == BIOMETRIC) { - QString strDeviceName = m_loginOptsWidget->GetDefaultDevice(getuid()); + QString strDeviceName = m_loginOptsWidget->GetDefaultDevice(uid); //如果默认设备为空的话,第一次不启动生物识别认证 if(strDeviceName.isEmpty() && !m_deviceInfo) { @@ -799,7 +799,7 @@ void MainWindow::switchAuthMode(Mode mode) if(enableBioAuth) { qDebug() << "enable biometric authenticaion"; - QString strDeviceName = m_loginOptsWidget->GetDefaultDevice(getuid()); + QString strDeviceName = m_loginOptsWidget->GetDefaultDevice(uid); //如果默认设备为空的话,第一次不启动生物识别认证 if(strDeviceName.isEmpty() && !m_deviceInfo) {