Skip to content

Commit fa2c764

Browse files
authored
fix: escape special characters when sharing qr code (#141)
1 parent 1f0f04f commit fa2c764

1 file changed

Lines changed: 15 additions & 1 deletion

File tree

src/mode/station/share.rs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,16 @@ pub struct Share {
2020
pub passphrase: String,
2121
}
2222

23+
// https://github.com/zxing/zxing/wiki/Barcode-Contents#wi-fi-network-config-android-ios-11
24+
fn get_escaped_wifi_value(value: &str) -> String {
25+
value
26+
.replace('\\', r"\\")
27+
.replace(';', r"\;")
28+
.replace(',', r"\,")
29+
.replace('"', r#"\""#)
30+
.replace(':', r"\:")
31+
}
32+
2333
impl Share {
2434
pub fn new(network_name: String) -> Result<Self> {
2535
let encoded_network_name = iwd_network_name(&network_name);
@@ -30,7 +40,11 @@ impl Share {
3040
.find(|&line| line.starts_with("Passphrase="))
3141
&& let Some((_, passphrase)) = line.split_once('=')
3242
{
33-
let message = format!("WIFI:T:WPA;S:{network_name};P:{passphrase};;");
43+
let message = format!(
44+
"WIFI:T:WPA;S:{};P:{};;",
45+
get_escaped_wifi_value(&network_name),
46+
get_escaped_wifi_value(passphrase),
47+
);
3448
let qr_code = QrCode::new(message)?;
3549
Ok(Self {
3650
qr_code,

0 commit comments

Comments
 (0)