To: vim_dev@googlegroups.com Subject: Patch 7.3.040 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.3.040 Problem: Comparing strings while ignoring case goes beyond end of the string when there are illegal bytes. (Dominique Pelle) Solution: Explicitly check for illegal bytes. Files: src/mbyte.c *** ../vim-7.3.039/src/mbyte.c 2010-10-23 14:02:48.000000000 +0200 --- src/mbyte.c 2010-10-27 13:34:16.000000000 +0200 *************** *** 3124,3129 **** --- 3124,3132 ---- /* If one of the two characters is incomplete return -1. */ if (incomplete || i + utf_byte2len(s2[i]) > n) return -1; + /* Don't case-fold illegal bytes or truncated characters. */ + if (utf_ptr2len(s1 + i) < l || utf_ptr2len(s2 + i) < l) + return -1; cdiff = utf_fold(utf_ptr2char(s1 + i)) - utf_fold(utf_ptr2char(s2 + i)); if (cdiff != 0) *** ../vim-7.3.039/src/version.c 2010-10-27 12:58:19.000000000 +0200 --- src/version.c 2010-10-27 13:25:16.000000000 +0200 *************** *** 716,717 **** --- 716,719 ---- { /* Add new patch number below this line */ + /**/ + 40, /**/ -- With sufficient thrust, pigs fly just fine. -- RFC 1925 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ download, build and distribute -- http://www.A-A-P.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///