mirror of
https://github.com/nginx/nginx.git
synced 2026-06-29 21:31:51 +00:00
Darwin, FreeBSD: fixed sysctlbyname() ENOMEM handling.
On ENOMEM, sysctlbyname() may update oldlenp, so the value no longer reliably represents the destination buffer size. The ENOMEM fallback used size to terminate kern.ostype and kern.osrelease. Use the static buffer sizes instead.
This commit is contained in:
parent
42f8df65b6
commit
ffd5b0dbe4
2 changed files with 8 additions and 4 deletions
|
|
@ -115,7 +115,8 @@ ngx_os_specific_init(ngx_log_t *log)
|
|||
return NGX_ERROR;
|
||||
}
|
||||
|
||||
ngx_darwin_kern_ostype[size - 1] = '\0';
|
||||
ngx_darwin_kern_ostype[sizeof(ngx_darwin_kern_ostype) - 1]
|
||||
= '\0';
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -135,7 +136,8 @@ ngx_os_specific_init(ngx_log_t *log)
|
|||
return NGX_ERROR;
|
||||
}
|
||||
|
||||
ngx_darwin_kern_osrelease[size - 1] = '\0';
|
||||
ngx_darwin_kern_osrelease[sizeof(ngx_darwin_kern_osrelease) - 1]
|
||||
= '\0';
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -116,7 +116,8 @@ ngx_os_specific_init(ngx_log_t *log)
|
|||
return NGX_ERROR;
|
||||
}
|
||||
|
||||
ngx_freebsd_kern_ostype[size - 1] = '\0';
|
||||
ngx_freebsd_kern_ostype[sizeof(ngx_freebsd_kern_ostype) - 1]
|
||||
= '\0';
|
||||
}
|
||||
|
||||
size = sizeof(ngx_freebsd_kern_osrelease);
|
||||
|
|
@ -129,7 +130,8 @@ ngx_os_specific_init(ngx_log_t *log)
|
|||
return NGX_ERROR;
|
||||
}
|
||||
|
||||
ngx_freebsd_kern_osrelease[size - 1] = '\0';
|
||||
ngx_freebsd_kern_osrelease[sizeof(ngx_freebsd_kern_osrelease) - 1]
|
||||
= '\0';
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue