diff --git a/libraries/liblunicode/ucstr.c b/libraries/liblunicode/ucstr.c index a8c65df861..d854b2aead 100644 --- a/libraries/liblunicode/ucstr.c +++ b/libraries/liblunicode/ucstr.c @@ -251,6 +251,18 @@ struct berval * UTF8bvnormalize( last = i; + /* Allocate more space in out if necessary */ + if (len - i > outsize - outpos) { + outsize = outsize + ((len - i) - (outsize - outpos)); + outtmp = (char *) realloc(out, outsize); + if (outtmp == NULL) { + free(out); + free(ucs); + return NULL; + } + out = outtmp; + } + /* s[i] is ascii */ /* finish off everything up to char before next non-ascii */ for ( i++; (i < len) && LDAP_UTF8_ISASCII(s + i); i++ ) {