Eina utf8: Handle overlong representations in the parser.
authortasn <tasn>
Thu, 17 Feb 2011 07:53:49 +0000 (07:53 +0000)
committertasn <tasn@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 17 Feb 2011 07:53:49 +0000 (07:53 +0000)
git-svn-id: http://svn.enlightenment.org/svn/e/trunk/eina@57112 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/eina_unicode.c

index 2b3dd18..a8bbfd0 100644 (file)
@@ -230,7 +230,7 @@ eina_unicode_utf8_get_next(const char *buf, int *iindex)
         if (((d = buf[ind++]) == 0) || IS_INVALID_BYTE(d) ||
             !IS_CONTINUATION_BYTE(d)) goto error;
         r |= (d & 0x3f);
-        if (!r) goto error;
+        if (r <= 0x7F) goto error;
         *iindex = ind;
         return r;
      }
@@ -243,7 +243,7 @@ eina_unicode_utf8_get_next(const char *buf, int *iindex)
         if (((d = buf[ind++]) == 0) || IS_INVALID_BYTE(d) ||
             !IS_CONTINUATION_BYTE(d)) goto error;
         r |= (d & 0x3f);
-        if (!r) goto error;
+        if (r <= 0x7FF) goto error;
         *iindex = ind;
         return r;
      }
@@ -259,7 +259,7 @@ eina_unicode_utf8_get_next(const char *buf, int *iindex)
         if (((d = buf[ind++]) == 0) || IS_INVALID_BYTE(d) ||
             !IS_CONTINUATION_BYTE(d)) goto error;
         r |= (d & 0x3f);
-        if (!r) goto error;
+        if (r <= 0xFFFF) goto error;
         *iindex = ind;
         return r;
      }
@@ -278,7 +278,7 @@ eina_unicode_utf8_get_next(const char *buf, int *iindex)
         if (((d = buf[ind++]) == 0) || IS_INVALID_BYTE(d) ||
             !IS_CONTINUATION_BYTE(d)) goto error;
         r |= (d & 0x3f);
-        if (!r) goto error;
+        if (r <= 0x1FFFFF) goto error;
         *iindex = ind;
         return r;
      }
@@ -300,7 +300,7 @@ eina_unicode_utf8_get_next(const char *buf, int *iindex)
         if (((d = buf[ind++]) == 0) || IS_INVALID_BYTE(d) ||
             !IS_CONTINUATION_BYTE(d)) goto error;
         r |= (d & 0x3f);
-        if (!r) goto error;
+        if (r <= 0x3FFFFFF) goto error;
         *iindex = ind;
         return r;
      }