fix(deploy): don't wipe local id when --deploy gets an empty --id (#15633)

`rustdesk --deploy --id ""` (e.g. an unset variable in a deployment
script) deploys a blank id, then wipes the local id and unconfirms the
key through the IPC config write. The Android deploy flow already guards
an empty id (#15146); apply the same guard to the CLI, and reject an
empty id at the IPC write boundary the same way the read path was fixed
in #15626.
This commit is contained in:
CHarris
2026-07-19 22:58:28 -04:00
committed by GitHub
parent c01300be20
commit 20ab5ab0ad
2 changed files with 10 additions and 3 deletions

View File

@@ -667,7 +667,8 @@ pub fn core_main() -> Option<Vec<String>> {
None
}
};
let new_id = get_value("--id");
// An empty --id (e.g. an unset var) would deploy a blank id; the Android flow guards this too (#15146).
let new_id = get_value("--id").filter(|s| !s.is_empty());
match crate::ui_interface::deploy_device(token, new_id) {
crate::ui_interface::DeployResult::Ok => {
println!("Device deployed.");

View File

@@ -881,8 +881,14 @@ async fn handle(data: Data, stream: &mut Connection) {
Some(value) => {
let mut updated = true;
if name == "id" {
// An empty id would wipe the local id and unconfirm the key (cf. #15626).
if value.is_empty() {
log::warn!("Ignoring empty id write over IPC");
updated = false;
} else {
Config::set_key_confirmed(false);
Config::set_id(&value);
}
} else if name == "temporary-password" {
password::update_temporary_password();
} else if name == "permanent-password" {