feat: integrate security loader into session startup - #224
Conversation
Reviewer's GuideIntegrates a security loader handshake into dde-session startup, routes system bus access (especially Power1) through a validated loader pipe mechanism, and adds build/test infrastructure and packaging for the loader-based startup wrapper. Sequence diagram for security loader handshake during session startupsequenceDiagram
actor DisplayManager
participant dde_session_loader_wrapper
participant dde_session_main as dde-session(main)
participant securityloaderhelper
participant SecurityLoader
participant Power1 as org.deepin.dde.Power1
participant SystemBus as systemBusConnection
DisplayManager->>dde_session_loader_wrapper: start session
dde_session_loader_wrapper->>dde_session_main: exec dde-session --fd1 --fd2
dde_session_main->>securityloaderhelper: parseSecurityLoaderFds(hasFd1, fd1, hasFd2, fd2, error)
dde_session_main->>SystemBus: systemBusConnection()
SystemBus-->>dde_session_main: baseService (uniqueName)
alt loaderInfo.loaded
dde_session_main->>securityloaderhelper: authorizePowerCaller(loaderInfo, uniqueName, error)
securityloaderhelper->>securityloaderhelper: buildPowerAuthorizationRequest(uniqueName)
securityloaderhelper->>SecurityLoader: writeRequest(requestFd, request)
SecurityLoader-->>securityloaderhelper: response on responseFd
securityloaderhelper->>securityloaderhelper: readResponse(responseFd)
securityloaderhelper-->>dde_session_main: authorization result
alt authorization success
dde_session_main->>SystemBus: use systemBusConnection for Power1
dde_session_main->>Power1: SetTlpMode / Get(TlpMode)
dde_session_main-->>DisplayManager: session running
else authorization failure
dde_session_main-->>DisplayManager: exit(EXIT_FAILURE)
end
else loaderInfo not loaded
dde_session_main->>SystemBus: use systemBusConnection for Power1
dde_session_main->>Power1: SetTlpMode / Get(TlpMode)
dde_session_main-->>DisplayManager: session running
end
Architecture diagram for loader-based dde-session startup and Power1 accessflowchart LR
DM["DisplayManager / Systemd user service"]
W["dde-session-loader-wrapper (bin/dde-session)"]
L["deepin-security-loader"]
S["dde-session (libexec/deepin/dde-session)"]
B["systemBusConnection (QDBus system bus)"]
P["org.deepin.dde.Power1"]
DM --> W
W -->|passes --fd1/--fd2 pipes| S
S -->|security loader request/response| L
S -->|DBus calls| B
B --> P
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
ad7b673 to
180deb8
Compare
1651730 to
aa80112
Compare
|
/test github-pr-review-ci |
1. Launch managed sessions through the security loader wrapper. 2. Validate loader pipes and authorize Power1 system bus access. 3. Update service startup, package dependencies, and helper tests. Log: Secure Power1 access during managed session startup Influence: 1. Verify startup succeeds with the security loader configured. 2. Verify fallback startup when the security loader is unavailable. 3. Run securityloaderhelper_test and exercise power mode recovery. feat: 集成会话启动安全加载器 1. 通过安全加载器包装脚本启动受管理的会话进程。 2. 校验加载器管道并授权访问 Power1 系统总线服务。 3. 更新服务启动方式、软件包依赖及辅助函数测试。 Log: 受管理会话启动时安全访问 Power1 服务 Influence: 1. 验证已配置安全加载器时会话可正常启动。 2. 验证安全加载器不可用时回退启动正常。 3. 运行 securityloaderhelper_test 并验证电源模式恢复。 PMS: TASK-393313
deepin pr auto review★ 总体评分:95分■ 【总体评价】
■ 【详细分析】
■ 【改进建议代码示例】 SecurityLoaderInfo parseSecurityLoaderFds(bool hasRequestFd,
const QString &requestFd,
bool hasResponseFd,
const QString &responseFd,
QString *errorMessage)
{
SecurityLoaderInfo info;
info.loaded = hasRequestFd || hasResponseFd;
if (!info.loaded)
return info;
if (!hasRequestFd || !hasResponseFd) {
setErrorMessage(errorMessage, QStringLiteral("security loader requires both --fd1 and --fd2"));
return info;
}
if (!parseFd(requestFd, &info.requestFd) || !parseFd(responseFd, &info.responseFd)) {
setErrorMessage(errorMessage, QStringLiteral("security loader file descriptors are invalid"));
info.requestFd = -1;
info.responseFd = -1;
info.loaded = false; // 增加状态同步
return info;
}
if (info.requestFd == info.responseFd) {
setErrorMessage(errorMessage, QStringLiteral("security loader file descriptors must be distinct"));
closeFd(info.requestFd, nullptr);
info.requestFd = -1;
info.responseFd = -1;
info.loaded = false; // 增加状态同步
}
return info;
} |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: fly602, yixinshark The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
Log: Secure Power1 access during managed session startup
Influence:
feat: 集成会话启动安全加载器
Log: 受管理会话启动时安全访问 Power1 服务
Influence:
PMS: TASK-393313
Summary by Sourcery
Secure managed session startup by routing it through the security loader while preserving a validated direct-start fallback.
New Features:
Bug Fixes:
Enhancements:
Build:
Deployment:
Tests: