Commit 5bba3ca1 authored by Martin Bark's avatar Martin Bark Committed by Thomas Petazzoni
Browse files

package/nodejs: fix support for uClibc-ng

Fix segmentation fault in node.js when using uClibc-ng.

This patch fixes bug #8296, see
https://bugs.busybox.net/show_bug.cgi?id=8296

.

Signed-off-by: default avatarMartin Bark <martin@barkynet.com>
Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
parent 41118ac9
Loading
Loading
Loading
Loading
+33 −0
Original line number Diff line number Diff line
From 1cc08f6ceacbb0e5ba1f4638ca3a97ac002d7792 Mon Sep 17 00:00:00 2001
From: "Bark, Martin" <martin.bark@te.com>
Date: Mon, 14 Dec 2015 13:26:10 +0000
Subject: [PATCH 2/2] Fix support for uClibc-ng

uClibc-ng is currently at v1.0.9.  The patch corrects the uClibc
version test so that HAVE_IFADDRS_H is defined for uClibc versions
after v0.9.32.

Submitted upstream to libuv and accepted, see
https://github.com/libuv/libuv/pull/653 and
https://github.com/libuv/libuv/commit/c861972

Signed-off-by: Bark, Martin <martin.bark@te.com>
---
 deps/uv/src/unix/linux-core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/deps/uv/src/unix/linux-core.c b/deps/uv/src/unix/linux-core.c
index e6e6828..6cbbb71 100644
--- a/deps/uv/src/unix/linux-core.c
+++ b/deps/uv/src/unix/linux-core.c
@@ -39,7 +39,7 @@
 #define HAVE_IFADDRS_H 1

 #ifdef __UCLIBC__
-# if __UCLIBC_MAJOR__ < 0 || __UCLIBC_MINOR__ < 9 || __UCLIBC_SUBLEVEL__ < 32
+# if __UCLIBC_MAJOR__ < 0 && __UCLIBC_MINOR__ < 9 && __UCLIBC_SUBLEVEL__ < 32
 #  undef HAVE_IFADDRS_H
 # endif
 #endif
--
2.6.2
+37 −0
Original line number Diff line number Diff line
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
+33 −0
Original line number Diff line number Diff line
From 1cc08f6ceacbb0e5ba1f4638ca3a97ac002d7792 Mon Sep 17 00:00:00 2001
From: "Bark, Martin" <martin.bark@te.com>
Date: Mon, 14 Dec 2015 13:26:10 +0000
Subject: [PATCH 2/2] Fix support for uClibc-ng

uClibc-ng is currently at v1.0.9.  The patch corrects the uClibc
version test so that HAVE_IFADDRS_H is defined for uClibc versions
after v0.9.32.

Submitted upstream to libuv and accepted, see
https://github.com/libuv/libuv/pull/653 and
https://github.com/libuv/libuv/commit/c861972

Signed-off-by: Bark, Martin <martin.bark@te.com>
---
 deps/uv/src/unix/linux-core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/deps/uv/src/unix/linux-core.c b/deps/uv/src/unix/linux-core.c
index e6e6828..6cbbb71 100644
--- a/deps/uv/src/unix/linux-core.c
+++ b/deps/uv/src/unix/linux-core.c
@@ -39,7 +39,7 @@
 #define HAVE_IFADDRS_H 1

 #ifdef __UCLIBC__
-# if __UCLIBC_MAJOR__ < 0 || __UCLIBC_MINOR__ < 9 || __UCLIBC_SUBLEVEL__ < 32
+# if __UCLIBC_MAJOR__ < 0 && __UCLIBC_MINOR__ < 9 && __UCLIBC_SUBLEVEL__ < 32
 #  undef HAVE_IFADDRS_H
 # endif
 #endif
--
2.6.2