From: tasn Date: Thu, 17 Feb 2011 07:53:49 +0000 (+0000) Subject: Eina utf8: Handle overlong representations in the parser. X-Git-Tag: submit/2.0alpha-wayland/20121127.222009~815 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e99949c4a324acd2439e48aa9c90dabfef7080a0;p=profile%2Fivi%2Feina.git Eina utf8: Handle overlong representations in the parser. git-svn-id: http://svn.enlightenment.org/svn/e/trunk/eina@57112 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- diff --git a/src/lib/eina_unicode.c b/src/lib/eina_unicode.c index 2b3dd18..a8bbfd0 100644 --- a/src/lib/eina_unicode.c +++ b/src/lib/eina_unicode.c @@ -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; }