|
@@ -0,0 +1,37 @@
|
|
|
+From 839bd9d147b2c85fe70196c86dbdbed504762caf Mon Sep 17 00:00:00 2001
|
|
|
+From: "Bark, Martin" <martin.bark@te.com>
|
|
|
+Date: Mon, 14 Dec 2015 13:27:51 +0000
|
|
|
+Subject: [PATCH 1/2] 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.
|
|
|
+
|
|
|
+Submitted upstream, see https://github.com/nodejs/node/pull/4272
|
|
|
+
|
|
|
+Signed-off-by: Martin Bark <martin@barkynet.com>
|
|
|
+---
|
|
|
+ src/node_os.cc | 2 +-
|
|
|
+ 1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
+
|
|
|
+diff --git a/src/node_os.cc b/src/node_os.cc
|
|
|
+index a100090..92f53a9 100644
|
|
|
+--- a/src/node_os.cc
|
|
|
++++ b/src/node_os.cc
|
|
|
+@@ -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");
|
|
|
+ }
|
|
|
+--
|
|
|
+2.6.2
|
|
|
+
|