]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Fix infinite loop when reading entity references
authorJürg Billeter <j@bitron.ch>
Sat, 17 Jan 2009 17:07:13 +0000 (17:07 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Sat, 17 Jan 2009 17:07:13 +0000 (17:07 +0000)
2009-01-17  Jürg Billeter  <j@bitron.ch>

* vapigen/valamarkupreader.vala:

Fix infinite loop when reading entity references

svn path=/trunk/; revision=2375

ChangeLog
vapigen/valamarkupreader.vala

index 4d6b2bd2343f599ef0f0e798ec18a3c80cad884b..dec2bb3422ef70e35b4eac106aa248f34ae73ba5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2009-01-17  Jürg Billeter  <j@bitron.ch>
+
+       * vapigen/valamarkupreader.vala:
+
+       Fix infinite loop when reading entity references
+
 2009-01-17  Jürg Billeter  <j@bitron.ch>
 
        * vapigen/valamarkupreader.vala:
index ef16b9e8372211dd5291b968eb98c845a1f3d4a6..4db901397a9a2bab66dcff13a731e911dd29c1d2 100644 (file)
@@ -153,17 +153,14 @@ public class Vala.MarkupReader : Object {
                                        current++;
                                        char* attr_begin = current;
                                        while (current < end && current[0] != '"') {
-                                               if (current[0] == '&') {
-                                                       // process &amp; &gt; &lt; &quot; &apos;
+                                               unichar u = ((string) current).get_char_validated ((long) (end - current));
+                                               if (u != (unichar) (-1)) {
+                                                       current += u.to_utf8 (null);
                                                } else {
-                                                       unichar u = ((string) current).get_char_validated ((long) (end - current));
-                                                       if (u != (unichar) (-1)) {
-                                                               current += u.to_utf8 (null);
-                                                       } else {
-                                                               Report.error (null, "invalid UTF-8 character");
-                                                       }
+                                                       Report.error (null, "invalid UTF-8 character");
                                                }
                                        }
+                                       // TODO process &amp; &gt; &lt; &quot; &apos;
                                        string attr_value = ((string) attr_begin).ndup (current - attr_begin);
                                        if (current >= end || current[0] != '"') {
                                                // error
@@ -188,15 +185,11 @@ public class Vala.MarkupReader : Object {
                        space ();
                        char* text_begin = current;
                        while (current < end && current[0] != '<') {
-                               if (current[0] == '&') {
-                                       // process &amp; &gt; &lt; &quot; &apos;
+                               unichar u = ((string) current).get_char_validated ((long) (end - current));
+                               if (u != (unichar) (-1)) {
+                                       current += u.to_utf8 (null);
                                } else {
-                                       unichar u = ((string) current).get_char_validated ((long) (end - current));
-                                       if (u != (unichar) (-1)) {
-                                               current += u.to_utf8 (null);
-                                       } else {
-                                               Report.error (null, "invalid UTF-8 character");
-                                       }
+                                       Report.error (null, "invalid UTF-8 character");
                                }
                        }
                        if (text_begin == current) {
@@ -205,6 +198,7 @@ public class Vala.MarkupReader : Object {
                                return read_token (out token_begin, out token_end);
                        }
                        type = MarkupTokenType.TEXT;
+                       // TODO process &amp; &gt; &lt; &quot; &apos;
                        // string text = ((string) text_begin).ndup (current - text_begin);
                }