From 785667ec074bd7d006e37037432c798ab17b2579 Mon Sep 17 00:00:00 2001 From: bjoern Date: Thu, 5 May 2022 11:55:05 +0200 Subject: [PATCH] fix qr-code display (#3295) * tagger.put_raw() has changes sematics and escapes strings on its own now an explicit escaping leads to double escaping and to wrong display. this should also improve lenght calculation, as a quote and other specials counts as 1 character and not as 4-6. * test encoding of generated qr-code-svg * streamline function argument wording use qrcode_description instead of raw_qrcode_description - there is nothing "raw" in the argument, it is a string as used throughout the app. --- CHANGELOG.md | 5 +++++ src/qr_code_generator.rs | 21 +++++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c2bfa43e..256f92236 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## Unreleased + +### Fixed +- fix escaping in generated QR-code-SVG #3295 + ## 1.79.0 ### Changes diff --git a/src/qr_code_generator.rs b/src/qr_code_generator.rs index cdfa5d428..502b0ba8a 100644 --- a/src/qr_code_generator.rs +++ b/src/qr_code_generator.rs @@ -65,13 +65,12 @@ async fn generate_verification_qr(context: &Context) -> Result { } fn inner_generate_secure_join_qr_code( - raw_qrcode_description: &str, + qrcode_description: &str, qrcode_content: &str, color: &str, avatar: Option>, avatar_letter: char, ) -> Result { - let qrcode_description = &escaper::encode_minimal(raw_qrcode_description); // config let width = 515.0; let height = 630.0; @@ -262,3 +261,21 @@ fn inner_generate_secure_join_qr_code( Ok(svg) } + +#[cfg(test)] +mod tests { + use super::*; + + #[async_std::test] + async fn test_svg_escaping() { + let svg = inner_generate_secure_join_qr_code( + "descr123 \" < > &", + "qr-code-content", + "#000000", + None, + 'X', + ) + .unwrap(); + assert!(svg.contains("descr123 " < > &")) + } +}