diff --git a/src/common/impl/sysctl.c b/src/common/impl/sysctl.c index 62268754a..597469814 100644 --- a/src/common/impl/sysctl.c +++ b/src/common/impl/sysctl.c @@ -47,10 +47,12 @@ const char* ffSysctlGetString(const char* propName, FFstrbuf* result) { ffStrbufEnsureFree(result, (uint32_t) neededLength - 1); - if (sysctlbyname(propName, result->chars + result->length, &neededLength, NULL, 0) == 0) { - result->length += (uint32_t) neededLength - 1; + if (sysctlbyname(propName, result->chars + result->length, &neededLength, NULL, 0) != 0) { + return "sysctlbyname() failed to retrieve string data"; } + result->length += (uint32_t) neededLength - 1; + result->chars[result->length] = '\0'; return NULL; @@ -81,9 +83,6 @@ void* ffSysctlGetData(int* request, u_int requestLength, size_t* resultLength) { } void* data = malloc(*resultLength); - if (data == NULL) { - return NULL; - } if (sysctl(request, requestLength, data, resultLength, NULL, 0) != 0) { free(data);