diff --git a/sapi/fuzzer/fuzzer-execute-common.h b/sapi/fuzzer/fuzzer-execute-common.h index 3189d514c02..3ecd27d3fd9 100644 --- a/sapi/fuzzer/fuzzer-execute-common.h +++ b/sapi/fuzzer/fuzzer-execute-common.h @@ -16,6 +16,10 @@ #include
+#if defined(__FreeBSD__) +# include +#endif + #include "fuzzer.h" #include "fuzzer-sapi.h" #include "zend_exceptions.h" @@ -140,7 +144,13 @@ ZEND_ATTRIBUTE_UNUSED char *get_opcache_path(void) { /* Try relative to binary location. */ char path[MAXPATHLEN]; +#if defined(__FreeBSD__) + size_t pathlen = sizeof(path); + int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1}; + if (sysctl(mib, 4, path, &pathlen, NULL, 0) < 0) { +#else if (readlink("/proc/self/exe", path, sizeof(path)) < 0) { +#endif ZEND_ASSERT(0 && "Failed to get binary path"); return NULL; }