X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcutil%2Fsilcstringprep.c;h=b1716cc501f0c783042b34a4e2ceb6db16882324;hb=e7b6c157b80152bf9fb9266e6bdd93f9fb0db776;hp=18ec3e94c889a648886ebaa47d394c1de904ddd1;hpb=f3b43606c546a86a43b283b46464972296e1e271;p=silc.git diff --git a/lib/silcutil/silcstringprep.c b/lib/silcutil/silcstringprep.c index 18ec3e94..b1716cc5 100644 --- a/lib/silcutil/silcstringprep.c +++ b/lib/silcutil/silcstringprep.c @@ -186,7 +186,7 @@ silc_stringprep(const unsigned char *bin, SilcUInt32 bin_len, f |= STRINGPREP_NO_UNASSIGNED; /* Prepare */ - ret = stringprep((char *)utf8s, utf8s_len + 1, f, profile); + ret = stringprep((char *)utf8s, utf8s_len, f, profile); SILC_LOG_DEBUG(("stringprep() return %d", ret)); /* Since the stringprep() doesn't allocate returned buffer, and @@ -194,10 +194,10 @@ silc_stringprep(const unsigned char *bin, SilcUInt32 bin_len, much space we must have for the conversion. Allocate more if it fails, and try again. */ if (ret == STRINGPREP_TOO_SMALL_BUFFER) { - utf8s = silc_realloc(utf8s, sizeof(*utf8s) * (utf8s_len * 2)); + utf8s = silc_realloc(utf8s, sizeof(*utf8s) * ((utf8s_len * 2) + 1)); if (!utf8s) return SILC_STRINGPREP_ERR_OUT_OF_MEMORY; - memset(utf8s + utf8s_len, 0, utf8s_len); + memset(utf8s + utf8s_len + 1, 0, utf8s_len); ret = stringprep((char *)utf8s, utf8s_len * 2, f, profile); SILC_LOG_DEBUG(("stringprep() return %d", ret)); }