X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcutil%2Fsilcstringprep.c;h=b1716cc501f0c783042b34a4e2ceb6db16882324;hb=e7b6c157b80152bf9fb9266e6bdd93f9fb0db776;hp=aa2119e5208898971ff06ed821dbd20b1a5f47d6;hpb=c257b555225193e54d85daf541d29578b3c93882;p=silc.git diff --git a/lib/silcutil/silcstringprep.c b/lib/silcutil/silcstringprep.c index aa2119e5..b1716cc5 100644 --- a/lib/silcutil/silcstringprep.c +++ b/lib/silcutil/silcstringprep.c @@ -17,9 +17,9 @@ */ -#include "silcincludes.h" +#include "silc.h" #include "silcstringprep.h" -#include +#include "stringprep.h" /* We use GNU Libidn which has stringprep to do the magic. Only bad thing is that its interface is idiotic. We have our own API here in case @@ -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)); }