CPackFreeBSD segmentation fault with newer libpkg
The CMake 3.11.2 FreeBSD CPack generator results in a segfault for me on FreeBSD 11.1-RELEASE-p10 with pkg 1.10.5.
The crash occurs here because pkg_init
is never called in cmCPackFreeBSDGenerator.cxx
, so it ends up calling strdup on NULL (pkg_config_get("ABI")
).
It seems this behavior changed recently in libpkg: https://github.com/freebsd/pkg/commit/2d1e456492bbc76b4d7604b1c1aef79f21738b41#diff-a050e86b9833d3fa0e42b392b87392a0
The backtrace looks like:
#0 strlen (str=0x0) at /usr/src/lib/libc/string/strlen.c:100
#1 0x0000000803025b72 in strdup (str=0x0) at /usr/src/lib/libc/string/strdup.c:46
#2 0x00000008022427a5 in xstrdup (str=0x0) at xmalloc.h:30
#3 0x00000008022417f2 in pkg_load_metadata (pkg=0x80708ce00,
mfile=0x807025df0 "/root/tst-build/_CPack_Packages/FreeBSD/FREEBSD/tst-0.0.1/+MANIFEST", md_dir=0x0, plist=0x0,
rootdir=0x80704d300 "/root/tst-build/_CPack_Packages/FreeBSD/FREEBSD/tst-0.0.1", testing=false) at pkg_create.c:357
#4 0x000000080224155d in pkg_create_from_manifest (outdir=0x80704d100 "/root/tst-build/_CPack_Packages/FreeBSD/FREEBSD/", format=TXZ,
rootdir=0x80704d300 "/root/tst-build/_CPack_Packages/FreeBSD/FREEBSD/tst-0.0.1",
manifest=0x807025df0 "/root/tst-build/_CPack_Packages/FreeBSD/FREEBSD/tst-0.0.1/+MANIFEST", plist=0x0) at pkg_create.c:240
#5 0x00000000004730c1 in std::__1::__tree_remove<std::__1::__tree_node_base<void*>*> ()
#6 0x0000000000429d42 in std::__1::__tree_balance_after_insert<std::__1::__tree_node_base<void*>*> ()
#7 0x000000000040fbbe in ?? ()
#8 0x000000000040c01f in ?? ()
#9 0x0000000800ab3000 in ?? ()
#10 0x0000000000000000 in ?? ()