GetMacosAlignedVersion() fails if sysctl is not setup
authorJulian Lettner <julian.lettner@apple.com>
Wed, 6 Jan 2021 20:41:40 +0000 (12:41 -0800)
committerJulian Lettner <julian.lettner@apple.com>
Fri, 15 Jan 2021 19:42:25 +0000 (11:42 -0800)
commit84de4faf4cae2885056c608db8256e9f039050b3
tree46dca931dbebc64270b1603ae77836f2d310cf6f
parent86e604c4d68528478333a8901d7c79c09ca16fa8
GetMacosAlignedVersion() fails if sysctl is not setup

`GetMacosAlignedVersion()` fails for ASan-ified launchd because the
sanitizer initialization code runs before `sysctl` has been setup by
launchd.  In this situation, `sysctl kern.osproductversion` returns a
non-empty string that does not match our expectations of a
well-formatted version string.

Retrieving the kernel version (via `sysctl kern.osrelease`) still works,
so we can use it to add a fallback for this corner case.

Differential Revision: https://reviews.llvm.org/D94190
compiler-rt/lib/sanitizer_common/sanitizer_mac.cpp