]> granicus.if.org Git - graphviz/commit
gxl2gv: avoid large on-stack buffer
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Fri, 20 May 2022 05:27:49 +0000 (22:27 -0700)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Sun, 22 May 2022 23:40:16 +0000 (16:40 -0700)
commit954b494e39e17e36e05c1241d8a65fdfb4682acf
treec0f3568c1dc183d1e73c062d0a90e816e3ba16ed
parent6c770e1e46a77c6b37e74e0611e2c562af99975f
gxl2gv: avoid large on-stack buffer

MSVC warns:

  C:\GitLab-Runner\builds\graphviz\graphviz\cmd\tools\gxl2gv.c(694): warning
    C6262: Function uses '20020' bytes of stack:  exceeds /analyze:stacksize
    '16384'.  Consider moving some data to heap.
    [C:\GitLab-Runner\builds\graphviz\graphviz\cmd\tools\gxl2gv.vcxproj]

So this function attempts to allocate ~20KB of stack data. Most of this is due
to the `buf` array. Using this much stack can cause crashes in constrained
environments. The buffer in question is used to read XML data in chunks, so we
can instead use the C standard library’s constant `BUFSIZ` that tells us the
optimal chunk size with which to perform I/O.

This change avoids the described problem as well as being a performance
optimization.
cmd/tools/gxl2gv.c