]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
Fix minor utf8-to-ucs2s read overrun bug
authorGreg Hudson <ghudson@mit.edu>
Fri, 25 Sep 2015 21:31:53 +0000 (17:31 -0400)
committerTom Yu <tlyu@mit.edu>
Thu, 10 Dec 2015 22:34:13 +0000 (17:34 -0500)
k5_utf8s_to_ucs2s() reads and ignores one extra byte from the input
string before terminating its loop, possibly overrunning the input
buffer of its caller.  This overrun is typically without consequence,
but can show up in tools like asan or valgrind during RC4
string-to-key operations.  Fix the bug by swapping the order of the
loop conditions.

(cherry picked from commit eb52da21d72faa3d00b1205a5a0fdbabc45c9e6d)

ticket: 8321 (new)
version_fixed: 1.12.5
status: resolved

src/util/support/utf8_conv.c

index b8bf98969fb61cfd9228f6c941654825c82d9871..8fa2ce08bdd33349a01b3cb88f96b46ea3c45359 100644 (file)
@@ -85,7 +85,7 @@ k5_utf8s_to_ucs2s(krb5_ucs2 *ucs2str,
     }
 
     /* Examine next UTF-8 character.  */
-    while (*utf8str && ucs2len < count) {
+    while (ucs2len < count && *utf8str != '\0') {
         /* Get UTF-8 sequence length from 1st byte */
         utflen = KRB5_UTF8_CHARLEN2(utf8str, utflen);