Fix more possible buffer overruns
authorBehdad Esfahbod <behdad@behdad.org>
Thu, 19 Jan 2012 02:28:34 +0000 (21:28 -0500)
committerBehdad Esfahbod <behdad@behdad.org>
Thu, 19 Jan 2012 02:28:34 +0000 (21:28 -0500)
I have this function, but can't clean up it to my satisfaction.

src/hb-ot-layout-gsubgpos-private.hh

index f1d03dc..13386c2 100644 (file)
@@ -317,12 +317,14 @@ static inline bool apply_lookup (hb_apply_context_t *c,
    */
   for (unsigned int i = 0; i < count; /* NOP */)
   {
+    if (unlikely (c->buffer->idx == end))
+      return true;
     while (c->should_mark_skip_current_glyph ())
     {
-      if (unlikely (c->buffer->idx == end))
-       return true;
       /* No lookup applied for this index */
       c->buffer->next_glyph ();
+      if (unlikely (c->buffer->idx == end))
+       return true;
     }
 
     if (lookupCount && i == lookupRecord->sequenceIndex)