Aric Stewart : usp10: Avoid an end of buffer overrun when seeking non space characters at an end of a BiDi string .

Alexandre Julliard julliard at winehq.org
Tue Nov 8 12:23:12 CST 2011


Module: wine
Branch: master
Commit: 38aa7696c57f9d3484a97ce9fb209c2ce1e9c32a
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=38aa7696c57f9d3484a97ce9fb209c2ce1e9c32a

Author: Aric Stewart <aric at codeweavers.com>
Date:   Tue Nov  8 09:31:57 2011 -0600

usp10: Avoid an end of buffer overrun when seeking non space characters at an end of a BiDi string.

---

 dlls/usp10/usp10.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/dlls/usp10/usp10.c b/dlls/usp10/usp10.c
index 05468eb..2a6107e 100644
--- a/dlls/usp10/usp10.c
+++ b/dlls/usp10/usp10.c
@@ -856,7 +856,10 @@ HRESULT WINAPI ScriptItemizeOpenType(const WCHAR *pwcInChars, int cInChars, int
             int j = 1;
             while (cnt + j < cInChars - 1 && (pwcInChars[cnt+j] == Numeric_space || pwcInChars[cnt+j] == ZWJ || pwcInChars[cnt+j] == ZWNJ))
                 j++;
-            New_Script = get_char_script(pwcInChars[cnt+j]);
+            if (cnt + j < cInChars)
+                New_Script = get_char_script(pwcInChars[cnt+j]);
+            else
+                New_Script = get_char_script(pwcInChars[cnt]);
         }
 
         if ((levels && (levels[cnt] != pItems[index].a.s.uBidiLevel || (strength && (strength[cnt] != str)))) || (New_Script != -1 && New_Script != pItems[index].a.eScript) || New_Script == Script_Control)




More information about the wine-cvs mailing list