diff options
author | Nicolás Reynolds <fauno@endefensadelsl.org> | 2014-05-29 04:09:56 +0000 |
---|---|---|
committer | Nicolás Reynolds <fauno@endefensadelsl.org> | 2014-05-29 04:09:56 +0000 |
commit | 44209e62f1f8f0e9efe048846bb09e6eb51ea9f4 (patch) | |
tree | 97720b9f37a268443fe50a258ef16c587a02ec91 /community/libuv | |
parent | fc3a052d9f439abcf0ce424b7d45b682a5377087 (diff) |
Thu May 29 04:04:14 UTC 2014
Diffstat (limited to 'community/libuv')
-rw-r--r-- | community/libuv/PKGBUILD | 15 | ||||
-rw-r--r-- | community/libuv/inet_pton6.patch | 146 |
2 files changed, 157 insertions, 4 deletions
diff --git a/community/libuv/PKGBUILD b/community/libuv/PKGBUILD index 351e64973..a2490709f 100644 --- a/community/libuv/PKGBUILD +++ b/community/libuv/PKGBUILD @@ -1,15 +1,21 @@ -# $Id: PKGBUILD 109510 2014-04-15 09:35:38Z mtorromeo $ +# $Id: PKGBUILD 112017 2014-05-28 16:26:31Z mtorromeo $ # Maintainer: Massimiliano Torromeo <massimiliano.torromeo@gmail.com> pkgname=libuv -pkgver=0.11.24 +pkgver=0.11.25 pkgrel=1 pkgdesc="A new platform layer for Node.JS" arch=('i686' 'x86_64') url="https://github.com/joyent/libuv" license=('custom') depends=('glibc') -source=("https://github.com/joyent/libuv/archive/v$pkgver.tar.gz") +source=("https://github.com/joyent/libuv/archive/v$pkgver.tar.gz" + "inet_pton6.patch::https://github.com/joyent/libuv/compare/6d56e6e132717df13c7ed76e6cc3ee53105759be...4fac9427e4a652cdebf241803ce7443dd59a4451.patch") + +prepare() { + cd "$srcdir/$pkgname-$pkgver" + patch -p1 -i "$srcdir/inet_pton6.patch" +} build() { cd "$srcdir/$pkgname-$pkgver" @@ -38,4 +44,5 @@ package() { "$pkgdir/usr/share/doc/$pkgname/ChangeLog" } -sha256sums=('8e23517d37a8c820fc68fa250b7398f520c76e40250b8da2a2eca230eb7f3ab8') +sha256sums=('b95a3e5eca9554998b7423ee786205e52731e82e2d24cbbd4f65af763de542fb' + '655c98f10daf171ce736cea594b710a3f8d72f4da02613588eb9856e4bb36561') diff --git a/community/libuv/inet_pton6.patch b/community/libuv/inet_pton6.patch new file mode 100644 index 000000000..3b0409712 --- /dev/null +++ b/community/libuv/inet_pton6.patch @@ -0,0 +1,146 @@ +From e7b3c3fb6b56298174e5eaf2ac3bea2b721cf0f5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Sa=C3=BAl=20Ibarra=20Corretg=C3=A9?= <saghul@gmail.com> +Date: Fri, 23 May 2014 16:36:57 +0200 +Subject: [PATCH 1/2] unix, windows: define UV__INET/6_ADDRSTRLEN constants + +--- + src/inet.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/src/inet.c b/src/inet.c +index 9220de6..0eb9438 100644 +--- a/src/inet.c ++++ b/src/inet.c +@@ -27,6 +27,9 @@ + #include "uv.h" + #include "uv-common.h" + ++#define UV__INET_ADDRSTRLEN 16 ++#define UV__INET6_ADDRSTRLEN 46 ++ + + static int inet_ntop4(const unsigned char *src, char *dst, size_t size); + static int inet_ntop6(const unsigned char *src, char *dst, size_t size); +@@ -49,7 +52,7 @@ int uv_inet_ntop(int af, const void* src, char* dst, size_t size) { + + static int inet_ntop4(const unsigned char *src, char *dst, size_t size) { + static const char fmt[] = "%u.%u.%u.%u"; +- char tmp[sizeof "255.255.255.255"]; ++ char tmp[UV__INET_ADDRSTRLEN]; + int l; + + #ifndef _WIN32 +@@ -74,7 +77,7 @@ static int inet_ntop6(const unsigned char *src, char *dst, size_t size) { + * Keep this in mind if you think this function should have been coded + * to use pointer overlays. All the world's not a VAX. + */ +- char tmp[sizeof "ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255"], *tp; ++ char tmp[UV__INET6_ADDRSTRLEN], *tp; + struct { int base, len; } best, cur; + unsigned int words[sizeof(struct in6_addr) / sizeof(uint16_t)]; + int i; +-- +1.9.3 + + +From 4fac9427e4a652cdebf241803ce7443dd59a4451 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Sa=C3=BAl=20Ibarra=20Corretg=C3=A9?= <saghul@gmail.com> +Date: Fri, 23 May 2014 09:25:23 +0200 +Subject: [PATCH 2/2] unix, windows: fix parsing scoped IPv6 addresses +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Saúl Ibarra Corretgé <saghul@gmail.com> +--- + src/inet.c | 36 ++++++++++++++++++++---------------- + test/test-ip6-addr.c | 2 ++ + 2 files changed, 22 insertions(+), 16 deletions(-) + +diff --git a/src/inet.c b/src/inet.c +index 0eb9438..c948b2e 100644 +--- a/src/inet.c ++++ b/src/inet.c +@@ -159,11 +159,27 @@ static int inet_ntop6(const unsigned char *src, char *dst, size_t size) { + + + int uv_inet_pton(int af, const char* src, void* dst) { ++ if (src == NULL || dst == NULL) ++ return UV_EINVAL; ++ + switch (af) { + case AF_INET: + return (inet_pton4(src, dst)); +- case AF_INET6: +- return (inet_pton6(src, dst)); ++ case AF_INET6: { ++ int len; ++ char tmp[UV__INET6_ADDRSTRLEN], *s, *p; ++ s = (char*) src; ++ p = strchr(src, '%'); ++ if (p != NULL) { ++ s = tmp; ++ len = p - src; ++ if (len > UV__INET6_ADDRSTRLEN-1) ++ return UV_EINVAL; ++ memcpy(s, src, len); ++ s[len] = '\0'; ++ } ++ return inet_pton6(s, dst); ++ } + default: + return UV_EAFNOSUPPORT; + } +@@ -228,7 +244,7 @@ static int inet_pton6(const char *src, unsigned char *dst) { + curtok = src; + seen_xdigits = 0; + val = 0; +- while ((ch = *src++) != '\0' && ch != '%') { ++ while ((ch = *src++) != '\0') { + const char *pch; + + if ((pch = strchr((xdigits = xdigits_l), ch)) == NULL) +@@ -259,19 +275,7 @@ static int inet_pton6(const char *src, unsigned char *dst) { + continue; + } + if (ch == '.' && ((tp + sizeof(struct in_addr)) <= endp)) { +- int err; +- +- /* Scope id present, parse ipv4 addr without it */ +- pch = strchr(curtok, '%'); +- if (pch != NULL) { +- char tmp[sizeof "255.255.255.255"]; +- +- memcpy(tmp, curtok, pch - curtok); +- curtok = tmp; +- src = pch; +- } +- +- err = inet_pton4(curtok, tp); ++ int err = inet_pton4(curtok, tp); + if (err == 0) { + tp += sizeof(struct in_addr); + seen_xdigits = 0; +diff --git a/test/test-ip6-addr.c b/test/test-ip6-addr.c +index 624b93b..cf8491f 100644 +--- a/test/test-ip6-addr.c ++++ b/test/test-ip6-addr.c +@@ -103,6 +103,7 @@ TEST_IMPL(ip6_addr_link_local) { + X("fe80::2acf:daff:fedd:342a") \ + X("fe80:0:0:0:2acf:daff:fedd:342a") \ + X("fe80:0:0:0:2acf:daff:1.2.3.4") \ ++ X("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255") \ + + #define BAD_ADDR_LIST(X) \ + X(":::1") \ +@@ -110,6 +111,7 @@ TEST_IMPL(ip6_addr_link_local) { + X("fe80:0:0:0:2acf:daff:fedd:342a:5678") \ + X("fe80:0:0:0:2acf:daff:abcd:1.2.3.4") \ + X("fe80:0:0:2acf:daff:1.2.3.4.5") \ ++ X("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255.255") \ + + #define TEST_GOOD(ADDR) \ + ASSERT(0 == uv_inet_pton(AF_INET6, ADDR, &addr)); \ +-- +1.9.3 + |