فهرست منبع

idna: fix hang with unicode character before delimiter (fixes #692)

Regressed in 5bc0e60601dad2f57cbbc71dabac7e18a256f514.
Dirkjan Ochtman 5 سال پیش
والد
کامیت
6e4b6282c6
2فایلهای تغییر یافته به همراه10 افزوده شده و 0 حذف شده
  1. 4 0
      idna/src/punycode.rs
  2. 6 0
      idna/tests/unit.rs

+ 4 - 0
idna/src/punycode.rs

@@ -78,6 +78,10 @@ impl Decoder {
             ),
         };
 
+        if !base.is_ascii() {
+            return Err(());
+        }
+
         let base_len = base.len();
         let mut length = base_len as u32;
         let mut code_point = INITIAL_N;

+ 6 - 0
idna/tests/unit.rs

@@ -131,3 +131,9 @@ fn emoji_domains() {
     let error = format!("{:?}", config.to_ascii("☕.com").unwrap_err());
     assert!(error.contains("disallowed_in_idna_2008"));
 }
+
+#[test]
+fn unicode_before_delimiter() {
+    let config = idna::Config::default();
+    assert!(config.to_ascii("xn--f\u{34a}-PTP").is_err());
+}