{
isc_interfaceiter_t *iter;
isc_result_t result;
+ size_t bufsize;
+ size_t bufused;
REQUIRE(mctx != NULL);
REQUIRE(iterp != NULL);
REQUIRE(*iterp == NULL);
iter->buf = 0;
/* Determine the amount of memory needed. */
- if (sysctl(mib, 6, 0, &iter->bufsize, 0, 0) < 0) {
+ bufsize = 0;
+ if (sysctl(mib, 6, NULL, &bufsize, NULL, (size_t) 0) < 0) {
UNEXPECTED_ERROR(__FILE__, __LINE__,
"getting interface list size: sysctl: %s",
strerror(errno));
result = ISC_R_UNEXPECTED;
goto failure;
}
+ iter->bufsize = bufsize;
iter->buf = isc_mem_get(iter->mctx, iter->bufsize);
if (iter->buf == NULL) {
goto failure;
}
- iter->bufused = iter->bufsize;
- if (sysctl(mib, 6, iter->buf, &iter->bufused, 0, 0) < 0) {
+ bufused = bufsize;
+ if (sysctl(mib, 6, iter->buf, &bufused, NULL, (size_t) 0) < 0) {
UNEXPECTED_ERROR(__FILE__, __LINE__,
"getting interface list: sysctl: %s",
strerror(errno));
result = ISC_R_UNEXPECTED;
goto failure;
}
+ iter->bufused = bufused;
INSIST(iter->bufused <= iter->bufsize);
/*