]> xenbits.xensource.com Git - libvirt.git/commitdiff
* src/buf.c: avoid an XML attribute escaping bug #499791
authorDaniel Veillard <veillard@redhat.com>
Wed, 13 May 2009 16:19:59 +0000 (16:19 +0000)
committerDaniel Veillard <veillard@redhat.com>
Wed, 13 May 2009 16:19:59 +0000 (16:19 +0000)
daniel

ChangeLog
src/buf.c

index 5f17b57131bd09f21d081f36d9d0572b5f266ef3..ba639194af27e956d203357dd51fbf72427ea7b5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Wed May 13 18:06:17 CEST 2009 Daniel Veillard <veillard@redhat.com>
+
+       * src/buf.c: avoid an XML attribute escaping bug #499791
+
 Wed May 13 12:34:06 BST 2009 Daniel P. Berrange <berrange@redhat.com>
 
        * src/lxc_container.c: Replace sys/capability.h with
index cdcdac9651feceb882711847e8e19129a05dec1a..259175d8d95b445fc627678910761851ead8b4e7 100644 (file)
--- a/src/buf.c
+++ b/src/buf.c
@@ -266,7 +266,7 @@ virBufferEscapeString(const virBufferPtr buf, const char *format, const char *st
         return;
 
     len = strlen(str);
-    if (VIR_ALLOC_N(escaped, 5 * len + 1) < 0) {
+    if (VIR_ALLOC_N(escaped, 6 * len + 1) < 0) {
         virBufferNoMemory(buf);
         return;
     }
@@ -290,6 +290,20 @@ virBufferEscapeString(const virBufferPtr buf, const char *format, const char *st
             *out++ = 'm';
             *out++ = 'p';
             *out++ = ';';
+        } else if (*cur == '"') {
+            *out++ = '&';
+            *out++ = 'q';
+            *out++ = 'u';
+            *out++ = 'o';
+            *out++ = 't';
+            *out++ = ';';
+        } else if (*cur == '\'') {
+            *out++ = '&';
+            *out++ = 'a';
+            *out++ = 'p';
+            *out++ = 'o';
+            *out++ = 's';
+            *out++ = ';';
         } else if ((*cur >= 0x20) || (*cur == '\n') || (*cur == '\t') ||
                    (*cur == '\r')) {
             /*