]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
test763: verify IDN hostname with zero width characters only
authorDaniel Stenberg <daniel@haxx.se>
Wed, 3 Sep 2025 10:47:07 +0000 (12:47 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Wed, 3 Sep 2025 13:49:54 +0000 (15:49 +0200)
Bonus: fix memory leak in exit path from 967a626af48aafd37

Closes #18465

lib/idn.c
tests/data/Makefile.am
tests/data/test763 [new file with mode: 0644]

index 28c45d66818436dfa2edccdb7c31e3668e1d31d3..bb6fd2cffc250dde7e5014b78a57e5a00152b24b 100644 (file)
--- a/lib/idn.c
+++ b/lib/idn.c
@@ -324,8 +324,10 @@ CURLcode Curl_idn_decode(const char *input, char **output)
   }
 #endif
   if(!result) {
-    if(!d[0]) /* ended up zero length, not acceptable */
+    if(!d[0]) /* ended up zero length, not acceptable */
       result = CURLE_URL_MALFORMAT;
+      free(d);
+    }
     else
       *output = d;
   }
index 9d1fcbb759afc33cb3c023f921ce201b8c01654b..daed381e4781d5cd25e50a2b31b22588b2e20bbc 100644 (file)
@@ -109,6 +109,7 @@ test727 test728 test729 test730 test731 test732 test733 test734 test735 \
 test736 test737 test738 test739 test740 test741 test742 test743 test744 \
 test745 test746 test747 test748 test749 test750 test751 test752 test753 \
 test754 test755 test756 test757 test758 test759 test760 test761 test762 \
+test763 \
 \
 test780 test781 test782 test783 test784 test785 test786 test787 test788 \
 test789 test790 test791 test792 test793 test794 test795 test796 test797 \
diff --git a/tests/data/test763 b/tests/data/test763
new file mode 100644 (file)
index 0000000..75059ef
--- /dev/null
@@ -0,0 +1,29 @@
+<testcase>
+<info>
+<keywords>
+IDN
+</keywords>
+</info>
+
+<client>
+<features>
+IDN
+!AppleIDN
+</features>
+<name>
+Unicode hostname ending up in a blank name
+</name>
+# e2 80 8b - ZERO WIDTH SPACE
+# e2 80 8c - ZERO WIDTH NON-JOINER
+<command>
+%hex['%e2%80%8b%e2%80%8c']hex%
+</command>
+</client>
+
+<verify>
+# curl: (3) URL using bad/illegal format or missing URL
+<errorcode>
+3
+</errorcode>
+</verify>
+</testcase>