mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
os: fix crash in GetInterfaceAddresses
If uv_interface_addresses() returns UV_ENOSYS then interfaces and count are uninitialised. This can cause a segmentation fault inside GetInterfaceAddresses when it tries to use the invalid interfaces[]. Fix the issue by returning from GetInterfaceAddresses on the UV_ENOSYS error. This issue was observed when using uCLibc-ng version 1.0.9 because uv_interface_addresses() in deps/uv/src/unix/linux-core.c incorrectly undefines HAVE_IFADDRS_H. Signed-off-by: Martin Bark <martin@barkynet.com> PR-URL: https://github.com/nodejs/node/pull/4272 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Brian White <mscdex@mscdex.net> Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Rod Vagg <rod@vagg.org>
This commit is contained in:
@@ -200,7 +200,7 @@ static void GetInterfaceAddresses(const FunctionCallbackInfo<Value>& args) {
|
||||
ret = Object::New(env->isolate());
|
||||
|
||||
if (err == UV_ENOSYS) {
|
||||
args.GetReturnValue().Set(ret);
|
||||
return args.GetReturnValue().Set(ret);
|
||||
} else if (err) {
|
||||
return env->ThrowUVException(err, "uv_interface_addresses");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user