summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/sanitizer_common/sanitizer_linux.cc9
1 files changed, 5 insertions, 4 deletions
diff --git a/lib/sanitizer_common/sanitizer_linux.cc b/lib/sanitizer_common/sanitizer_linux.cc
index 6c1c8f7b2..60dd1b4d3 100644
--- a/lib/sanitizer_common/sanitizer_linux.cc
+++ b/lib/sanitizer_common/sanitizer_linux.cc
@@ -490,12 +490,13 @@ static void GetArgsAndEnv(char ***argv, char ***envp) {
#else
// On FreeBSD, retrieving the argument and environment arrays is done via the
// kern.ps_strings sysctl, which returns a pointer to a structure containing
- // this information. If the sysctl is not available, a "hardcoded" address,
- // PS_STRINGS, must be used instead. See also <sys/exec.h>.
+ // this information. See also <sys/exec.h>.
ps_strings *pss;
size_t sz = sizeof(pss);
- if (sysctlbyname("kern.ps_strings", &pss, &sz, NULL, 0) == -1)
- pss = (ps_strings*)PS_STRINGS;
+ if (sysctlbyname("kern.ps_strings", &pss, &sz, NULL, 0) == -1) {
+ Printf("sysctl kern.ps_strings failed\n");
+ Die();
+ }
*argv = pss->ps_argvstr;
*envp = pss->ps_envstr;
#endif