]> granicus.if.org Git - graphviz/commitdiff
dot2gxl: fix crashes when given an empty node id
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Fri, 22 Apr 2022 04:53:41 +0000 (21:53 -0700)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Sat, 23 Apr 2022 15:00:34 +0000 (08:00 -0700)
An empty node id is now treated as if id was missing altogether.

Gitlab: fixes #2092

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

index bf9f93f5aa3c385eb0232a52456d0f7bd850d6b1..e89cfb04385c88391d6124019314008af508b2c7 100644 (file)
@@ -36,6 +36,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 - gvpr index function produces wrong results #2211. This was a regression in
   Graphviz 2.47.0.
 - Error on more than 128 cluster subgraphs #2080
+- `dot2gxl` no longer crashes on input `<node id="">` #2092
 
 ### Removed
 
index 8d4364afa259dc131ab08d40283ee7772c6f9e73..47cb165a6c462c581946f285aec6fc859ad86b1a 100644 (file)
@@ -485,9 +485,11 @@ startElementHandler(void *userData, const char *name, const char **atts)
            const char *attrname;
            attrname = atts[pos];
 
-           bind_node(attrname);
+           if (attrname != NULL && strcmp(attrname, "") != 0) {
+               bind_node(attrname);
 
-           pushString(&ud->elements, attrname);
+               pushString(&ud->elements, attrname);
+           }
        }
 
     } else if (strcmp(name, "edge") == 0) {
index 09f693748690cd71e51dfcdaba6ffb51d15ae573..197cfe1740a1eb97af4c43a285128b8a325f2837 100644 (file)
@@ -1228,7 +1228,6 @@ def test_2089_2():
 
 @pytest.mark.skipif(shutil.which("dot2gxl") is None,
                     reason="dot2gxl not available")
-@pytest.mark.xfail() # FIXME
 def test_2092():
   """
   an empty node ID should not cause a dot2gxl NULL pointer dereference