]> granicus.if.org Git - graphviz/commitdiff
gv2gml: fix attribute escaping
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Sat, 25 Sep 2021 19:27:36 +0000 (12:27 -0700)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Fri, 1 Oct 2021 14:49:27 +0000 (07:49 -0700)
When processing characters in attribute values that should be escaped (e.g.
`"`), `gv2gml` would emit these as-is, resulting in invalid GML output. Such
attribute values are now correctly XML-escaped.

Fixes #1276.

CHANGELOG.md
cmd/tools/gv2gml.c
rtest/test_regression.py

index a715d35a6855cda2c1016c4b0ef5e9d726c57b99..00b6a6a7741da6e25fa53515f40821eff1484b6f 100644 (file)
@@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 - Msys experimental packages are included in release artifacts #2130
 - CMake build system incorrectly aliases gv2gml to gml2gv #2131
+- Gv2gml Doesn't escape quotes in attributes #1276
 
 ## [2.49.1] – 2021-09-22
 
index 716ae9e077306018d8e2b3a95c729344dfc27749..788db3afaa3e8847e7779449151f5c7a5204fa7f 100644 (file)
@@ -24,6 +24,8 @@
 #include <getopt.h>
 
 #include <cgraph/cgraph.h>
+#include <common/types.h>
+#include <common/utils.h>
 #include <ctype.h>
 #include <ingraphs/ingraphs.h>
 
@@ -222,7 +224,7 @@ emitAttr (char* name, char* value, FILE* outFile, int ix)
     if (isNumber (value))
        fprintf (outFile, "%s %s\n", name, value);
     else  
-       fprintf (outFile, "%s \"%s\"\n", name, value);
+       fprintf (outFile, "%s \"%s\"\n", name, xml_string(value));
 }
 
 /* node attributes:
index f48262be0fe89beaafb33f1620410aa05c32383e..6b4ac674d375fa53e5ce9ab6727bc7a31ed76988 100644 (file)
@@ -346,7 +346,6 @@ def test_1221():
 
 @pytest.mark.skipif(shutil.which("gv2gml") is None,
                     reason="gv2gml not available")
-@pytest.mark.xfail(strict=True)
 def test_1276():
   """
   quotes within a label should be escaped in translation to GML