]> granicus.if.org Git - graphviz/commitdiff
gv2gxl writeHdr: fix use after free
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Sun, 22 Jan 2023 18:43:41 +0000 (10:43 -0800)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Sat, 28 Jan 2023 06:46:29 +0000 (22:46 -0800)
This call to `free` looked like it was deallocating the earlier allocation
within this function. But at this point `bp` points to the return value of a
call to `addid`. This return value is a `name` member of an item stored in the
`idList` dictionary that is still in use.

The original allocated memory of `bp` was and still is leaked.

cmd/tools/gv2gxl.c

index e35b5a72b761117a90a649d4c672c4dbb3e9a532..e28a1e9bd189c419c5e4e156c6dc2716aad7eb3b 100644 (file)
@@ -468,7 +468,6 @@ writeHdr(gxlstate_t * stp, Agraph_t * g, FILE * gxlFile, int top)
 
        tabover(gxlFile);
        fprintf(gxlFile, "<node id=\"%s\">\n", bp);
-       free(bp);
        Level++;
     } else {
        Tailport = agattr(g, AGEDGE, "tailport", NULL);