AddressSanitizer: strcpy-param-overlap in gvconfig_libdir when running dot -c
Steps to reproduce
Build using Cmake with address sanitizer and then run dot -c
or cpack
in the build directory, e.g. with this script: bgcs
Expected Behaviour
No error.
Actual Behaviour
==1409075==ERROR: AddressSanitizer: strcpy-param-overlap: memory ranges [0x7eff563f2f80,0x7eff563f2fe2) and [0x7eff563f2fc9, 0x7eff563f302b) overlap
#0 0x7eff56491ef1 (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x9bef1)
#1 0x7eff5621f43d in gvconfig_libdir (/home/magjac/graphviz/build/_CPack_Packages/Linux/ZIP/Graphviz-2.47.1~dev.20210404.0547-Linux/lib/libgvc.so.6+0x7743d)
#2 0x7eff562200be in gvconfig (/home/magjac/graphviz/build/_CPack_Packages/Linux/ZIP/Graphviz-2.47.1~dev.20210404.0547-Linux/lib/libgvc.so.6+0x780be)
#3 0x7eff5621c9e1 in gvContextPlugins (/home/magjac/graphviz/build/_CPack_Packages/Linux/ZIP/Graphviz-2.47.1~dev.20210404.0547-Linux/lib/libgvc.so.6+0x749e1)
#4 0x55fd0658ca06 in main (/home/magjac/graphviz/build/_CPack_Packages/Linux/ZIP/Graphviz-2.47.1~dev.20210404.0547-Linux/bin/dot+0x2a06)
#5 0x7eff55f9d0b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
#6 0x55fd0658c46d in _start (/home/magjac/graphviz/build/_CPack_Packages/Linux/ZIP/Graphviz-2.47.1~dev.20210404.0547-Linux/bin/dot+0x246d)
0x7eff563f2f80 is located 0 bytes inside of global variable 'line' defined in '/home/magjac/graphviz/lib/gvc/gvconfig.c:263:17' (0x7eff563f2f80) of size 1024
0x7eff563f2fc9 is located 73 bytes inside of global variable 'line' defined in '/home/magjac/graphviz/lib/gvc/gvconfig.c:263:17' (0x7eff563f2f80) of size 1024
SUMMARY: AddressSanitizer: strcpy-param-overlap (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x9bef1)
OS Version
Ubuntu 20.04.
Graphviz Version
Built from a3c42725.
Additional info
dot -c
is run as part of CPack (since !1581 (merged)).
The culprit is https://gitlab.com/graphviz/graphviz/-/blob/main/lib/gvc/gvconfig.c#L341
I guess the correct solution is to use memmove.