diff mbox

[v2,4/5] package/nodejs: fix support for uClibc-ng

Message ID 1450394426-3349-4-git-send-email-martin@barkynet.com
State Superseded
Headers show

Commit Message

Martin Bark Dec. 17, 2015, 11:20 p.m. UTC
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: Martin Bark <martin@barkynet.com>

---
Changes v1 -> v2
 - Updated for node 5.3.0. removed patches for 0.12.9 and 4.2.3
---
 .../0005-Fix-crash-in-GetInterfaceAddresses.patch  | 37 ++++++++++++++++++++++
 .../5.3.0/0006-Fix-support-for-uClibc-ng.patch     | 32 +++++++++++++++++++
 2 files changed, 69 insertions(+)
 create mode 100644 package/nodejs/5.3.0/0005-Fix-crash-in-GetInterfaceAddresses.patch
 create mode 100644 package/nodejs/5.3.0/0006-Fix-support-for-uClibc-ng.patch

Comments

Yann E. MORIN Dec. 18, 2015, 9:15 p.m. UTC | #1
Martin, All,

On 2015-12-17 23:20 +0000, Martin Bark spake thusly:
> 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: Martin Bark <martin@barkynet.com>
> 
> ---
[--SNIP--]
> diff --git a/package/nodejs/5.3.0/0006-Fix-support-for-uClibc-ng.patch b/package/nodejs/5.3.0/0006-Fix-support-for-uClibc-ng.patch
> new file mode 100644
> index 0000000..918a36a
> --- /dev/null
> +++ b/package/nodejs/5.3.0/0006-Fix-support-for-uClibc-ng.patch
> @@ -0,0 +1,32 @@
> +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, see https://github.com/libuv/libuv/pull/653

And that has since been accepted and applied:
    https://github.com/libuv/libuv/commit/c8619721404c2a9f97adc34a8c3b5336317311bc

Regards,
Yann E. MORIN.

> +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
> +
> -- 
> 2.5.0
> 
> _______________________________________________
> buildroot mailing list
> buildroot@busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
Martin Bark Dec. 20, 2015, 4:58 p.m. UTC | #2
Yann,

On 18 December 2015 at 21:15, Yann E. MORIN <yann.morin.1998@free.fr> wrote:
> Martin, All,
>
> On 2015-12-17 23:20 +0000, Martin Bark spake thusly:
>> 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: Martin Bark <martin@barkynet.com>
>>
>> ---
> [--SNIP--]
>> diff --git a/package/nodejs/5.3.0/0006-Fix-support-for-uClibc-ng.patch b/package/nodejs/5.3.0/0006-Fix-support-for-uClibc-ng.patch
>> new file mode 100644
>> index 0000000..918a36a
>> --- /dev/null
>> +++ b/package/nodejs/5.3.0/0006-Fix-support-for-uClibc-ng.patch
>> @@ -0,0 +1,32 @@
>> +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, see https://github.com/libuv/libuv/pull/653
>
> And that has since been accepted and applied:
>     https://github.com/libuv/libuv/commit/c8619721404c2a9f97adc34a8c3b5336317311bc

Good point, i'll update the comment in my next patch set

>
> Regards,
> Yann E. MORIN.
>
>> +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
>> +
>> --
>> 2.5.0
>>
>> _______________________________________________
>> buildroot mailing list
>> buildroot@busybox.net
>> http://lists.busybox.net/mailman/listinfo/buildroot
>
> --
> .-----------------.--------------------.------------------.--------------------.
> |  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
> | +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
> | +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
> | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
> '------------------------------^-------^------------------^--------------------'
diff mbox

Patch

diff --git a/package/nodejs/5.3.0/0005-Fix-crash-in-GetInterfaceAddresses.patch b/package/nodejs/5.3.0/0005-Fix-crash-in-GetInterfaceAddresses.patch
new file mode 100644
index 0000000..d964290
--- /dev/null
+++ b/package/nodejs/5.3.0/0005-Fix-crash-in-GetInterfaceAddresses.patch
@@ -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
+
diff --git a/package/nodejs/5.3.0/0006-Fix-support-for-uClibc-ng.patch b/package/nodejs/5.3.0/0006-Fix-support-for-uClibc-ng.patch
new file mode 100644
index 0000000..918a36a
--- /dev/null
+++ b/package/nodejs/5.3.0/0006-Fix-support-for-uClibc-ng.patch
@@ -0,0 +1,32 @@ 
+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, see https://github.com/libuv/libuv/pull/653
+
+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
+