From eddf3cbee82510734afbe620e686ab72c8b2201d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Tue, 12 Feb 2008 11:58:37 +0000 Subject: [PATCH] Move logic into wind_punycode_label_toascii() git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@22594 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/wind/idn-lookup.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/lib/wind/idn-lookup.c b/lib/wind/idn-lookup.c index 76d65737e..8b9e4dcaf 100644 --- a/lib/wind/idn-lookup.c +++ b/lib/wind/idn-lookup.c @@ -73,7 +73,7 @@ lookup(const char *name) size_t u_len = strlen(name); uint32_t *u = malloc(u_len * sizeof(uint32_t)); - size_t norm_len = u_len; + size_t norm_len = u_len * 2; uint32_t *norm = malloc(norm_len * sizeof(uint32_t)); if (u == NULL || norm == NULL) @@ -95,16 +95,10 @@ lookup(const char *name) for (j = i; j < norm_len && !is_separator(norm[j]); ++j) ; len = sizeof(encoded) - (ep - encoded); - ret = wind_punycode_toascii(norm + i, j - i, ep, &len); - if (ret < 0) + ret = wind_punycode_label_toascii(norm + i, j - i, ep, &len); + if (ret) errx(1, "punycode failed"); - if (ret) { - memmove(ep + 4, ep, len); - memcpy(ep, "xn--", 4); - ep += 4; - } else { - --len; - } + ep += len; *ep++ = '.'; i = j;