diff options
author | Timo Teräs <timo.teras@iki.fi> | 2014-06-06 08:34:31 +0300 |
---|---|---|
committer | Timo Teräs <timo.teras@iki.fi> | 2014-06-06 08:34:31 +0300 |
commit | ace7896296b96faa72fcb545501b6efba632f875 (patch) | |
tree | 30ac8d90dd4ab894398353fc3aa7008d7646ad84 | |
parent | b2c27b78793d9e95c01546e5c5a2326822f4d07e (diff) | |
download | aports-ace7896296b96faa72fcb545501b6efba632f875.tar.bz2 aports-ace7896296b96faa72fcb545501b6efba632f875.tar.xz |
main/musl: upgrade to git snapshot of 2014-06-05
important bug fixes, as well as few new features
-rw-r--r-- | main/musl/0003-d85d261e-to-2abb70c3.patch | 540 | ||||
-rw-r--r-- | main/musl/APKBUILD | 6 |
2 files changed, 545 insertions, 1 deletions
diff --git a/main/musl/0003-d85d261e-to-2abb70c3.patch b/main/musl/0003-d85d261e-to-2abb70c3.patch new file mode 100644 index 0000000000..0ceecf5eb5 --- /dev/null +++ b/main/musl/0003-d85d261e-to-2abb70c3.patch @@ -0,0 +1,540 @@ +diff --git a/include/netdb.h b/include/netdb.h +index dfc70e2..703a4b2 100644 +--- a/include/netdb.h ++++ b/include/netdb.h +@@ -41,7 +41,7 @@ struct addrinfo + #define NI_NOFQDN 0x04 + #define NI_NAMEREQD 0x08 + #define NI_DGRAM 0x10 +-/*#define NI_NUMERICSCOPE */ ++#define NI_NUMERICSCOPE 0x100 + + #define EAI_BADFLAGS -1 + #define EAI_NONAME -2 +diff --git a/src/network/dn_expand.c b/src/network/dn_expand.c +index 96adf37..849df19 100644 +--- a/src/network/dn_expand.c ++++ b/src/network/dn_expand.c +@@ -4,10 +4,11 @@ + int __dn_expand(const unsigned char *base, const unsigned char *end, const unsigned char *src, char *dest, int space) + { + const unsigned char *p = src; +- int len = -1, j; +- if (space > 256) space = 256; ++ char *dend = dest + (space > 254 ? 254 : space); ++ int len = -1, i, j; + if (p==end || !*p) return -1; +- for (;;) { ++ /* detect reference loop using an iteration counter */ ++ for (i=0; i < end-base; i+=2) { + if (*p & 0xc0) { + if (p+1==end) return -1; + j = ((p[0] & 0x3f) << 8) | p[1]; +@@ -16,7 +17,7 @@ int __dn_expand(const unsigned char *base, const unsigned char *end, const unsig + p = base+j; + } else if (*p) { + j = *p+1; +- if (j>=end-p || j>space) return -1; ++ if (j>=end-p || j>dend-dest) return -1; + while (--j) *dest++ = *++p; + *dest++ = *++p ? '.' : 0; + } else { +@@ -24,6 +25,7 @@ int __dn_expand(const unsigned char *base, const unsigned char *end, const unsig + return len; + } + } ++ return -1; + } + + weak_alias(__dn_expand, dn_expand); +diff --git a/src/network/ent.c b/src/network/ent.c +index 4c2f24b..ececdc4 100644 +--- a/src/network/ent.c ++++ b/src/network/ent.c +@@ -16,11 +16,3 @@ void endhostent(void) + weak_alias(sethostent, setnetent); + weak_alias(gethostent, getnetent); + weak_alias(endhostent, endnetent); +- +-weak_alias(sethostent, setservent); +-weak_alias(gethostent, getservent); +-weak_alias(endhostent, endservent); +- +-weak_alias(sethostent, setprotoent); +-weak_alias(gethostent, getprotoent); +-weak_alias(endhostent, endprotoent); +diff --git a/src/network/getaddrinfo.c b/src/network/getaddrinfo.c +index 70b6cfd..d991344 100644 +--- a/src/network/getaddrinfo.c ++++ b/src/network/getaddrinfo.c +@@ -105,6 +105,7 @@ int getaddrinfo(const char *restrict host, const char *restrict serv, const stru + case AF_INET6: + out[k].sa.sin6.sin6_family = AF_INET6; + out[k].sa.sin6.sin6_port = htons(ports[j].port); ++ out[k].sa.sin6.sin6_scope_id = addrs[i].scopeid; + memcpy(&out[k].sa.sin6.sin6_addr, &addrs[i].addr, 16); + break; + } +diff --git a/src/network/getnameinfo.c b/src/network/getnameinfo.c +index dfcf6ed..588ed76 100644 +--- a/src/network/getnameinfo.c ++++ b/src/network/getnameinfo.c +@@ -5,6 +5,10 @@ + #include <sys/socket.h> + #include <netinet/in.h> + #include <arpa/inet.h> ++#include <net/if.h> ++#include <ctype.h> ++#include "lookup.h" ++#include "stdio_impl.h" + + int __dns_parse(const unsigned char *, int, int (*)(void *, int, const void *, int, const void *), void *); + int __dn_expand(const unsigned char *, const unsigned char *, const unsigned char *, char *, int); +@@ -14,6 +18,16 @@ int __res_send(const unsigned char *, int, unsigned char *, int); + #define PTR_MAX (64 + sizeof ".in-addr.arpa") + #define RR_PTR 12 + ++static char *itoa(char *p, unsigned x) { ++ p += 3*sizeof(int); ++ *--p = 0; ++ do { ++ *--p = '0' + x % 10; ++ x /= 10; ++ } while (x); ++ return p; ++} ++ + static void mkptr4(char *s, const unsigned char *ip) + { + sprintf(s, "%d.%d.%d.%d.in-addr.arpa", +@@ -31,6 +45,72 @@ static void mkptr6(char *s, const unsigned char *ip) + strcpy(s, "ip6.arpa"); + } + ++static void reverse_hosts(char *buf, const unsigned char *a, unsigned scopeid, int family) ++{ ++ char line[512], *p, *z; ++ unsigned char _buf[1032], atmp[16]; ++ struct address iplit; ++ FILE _f, *f = __fopen_rb_ca("/etc/hosts", &_f, _buf, sizeof _buf); ++ if (!f) return; ++ if (family == AF_INET) { ++ memcpy(atmp+12, a, 4); ++ memcpy(atmp, "\0\0\0\0\0\0\0\0\0\0\xff\xff", 12); ++ a = atmp; ++ } ++ while (fgets(line, sizeof line, f)) { ++ if ((p=strchr(line, '#'))) *p++='\n', *p=0; ++ ++ for (p=line; *p && !isspace(*p); p++); ++ *p++ = 0; ++ if (__lookup_ipliteral(&iplit, line, AF_UNSPEC)<=0) ++ continue; ++ ++ if (iplit.family == AF_INET) { ++ memcpy(iplit.addr+12, iplit.addr, 4); ++ memcpy(iplit.addr, "\0\0\0\0\0\0\0\0\0\0\xff\xff", 12); ++ iplit.scopeid = 0; ++ } ++ ++ if (memcmp(a, iplit.addr, 16) || iplit.scopeid != scopeid) ++ continue; ++ ++ for (; *p && isspace(*p); p++); ++ for (z=p; *z && !isspace(*z); z++); ++ *z = 0; ++ if (z-p < 256) { ++ memcpy(buf, p, z-p+1); ++ break; ++ } ++ } ++ __fclose_ca(f); ++} ++ ++static void reverse_services(char *buf, int port, int dgram) ++{ ++ unsigned long svport; ++ char line[128], *p, *z; ++ unsigned char _buf[1032]; ++ FILE _f, *f = __fopen_rb_ca("/etc/services", &_f, _buf, sizeof _buf); ++ if (!f) return; ++ while (fgets(line, sizeof line, f)) { ++ if ((p=strchr(line, '#'))) *p++='\n', *p=0; ++ ++ for (p=line; *p && !isspace(*p); p++); ++ if (!p) continue; ++ *p++ = 0; ++ svport = strtoul(p, &z, 10); ++ ++ if (svport != port || z==p) continue; ++ if (dgram && strncmp(z, "/udp", 4)) continue; ++ if (!dgram && strncmp(z, "/tcp", 4)) continue; ++ if (p-line > 32) continue; ++ ++ memcpy(buf, line, p-line); ++ break; ++ } ++ __fclose_ca(f); ++} ++ + static int dns_parse_callback(void *c, int rr, const void *data, int len, const void *packet) + { + char tmp[256]; +@@ -48,15 +128,17 @@ int getnameinfo(const struct sockaddr *restrict sa, socklen_t sl, + int flags) + { + char ptr[PTR_MAX]; +- char buf[256]; ++ char buf[256], num[3*sizeof(int)+1]; + int af = sa->sa_family; + unsigned char *a; ++ unsigned scopeid; + + switch (af) { + case AF_INET: + a = (void *)&((struct sockaddr_in *)sa)->sin_addr; + if (sl != sizeof(struct sockaddr_in)) return EAI_FAMILY; + mkptr4(ptr, a); ++ scopeid = 0; + break; + case AF_INET6: + a = (void *)&((struct sockaddr_in6 *)sa)->sin6_addr; +@@ -65,6 +147,7 @@ int getnameinfo(const struct sockaddr *restrict sa, socklen_t sl, + mkptr6(ptr, a); + else + mkptr4(ptr, a+12); ++ scopeid = ((struct sockaddr_in6 *)sa)->sin6_scope_id; + break; + default: + return EAI_FAMILY; +@@ -73,6 +156,9 @@ int getnameinfo(const struct sockaddr *restrict sa, socklen_t sl, + if (node && nodelen) { + buf[0] = 0; + if (!(flags & NI_NUMERICHOST)) { ++ reverse_hosts(buf, a, scopeid, af); ++ } ++ if (!*buf && !(flags & NI_NUMERICHOST)) { + unsigned char query[18+PTR_MAX], reply[512]; + int qlen = __res_mkquery(0, ptr, 1, RR_PTR, + 0, 0, 0, query, sizeof query); +@@ -84,16 +170,33 @@ int getnameinfo(const struct sockaddr *restrict sa, socklen_t sl, + if (!*buf) { + if (flags & NI_NAMEREQD) return EAI_NONAME; + inet_ntop(af, a, buf, sizeof buf); ++ if (scopeid) { ++ char *p = 0, tmp[IF_NAMESIZE+1]; ++ if (!(flags & NI_NUMERICSCOPE) && ++ (IN6_IS_ADDR_LINKLOCAL(a) || ++ IN6_IS_ADDR_MC_LINKLOCAL(a))) ++ p = if_indextoname(scopeid, tmp+1); ++ if (!p) ++ p = itoa(num, scopeid); ++ *--p = '%'; ++ strcat(buf, p); ++ } + } + if (strlen(buf) >= nodelen) return EAI_OVERFLOW; + strcpy(node, buf); + } + + if (serv && servlen) { +- if (snprintf(buf, sizeof buf, "%d", +- ntohs(((struct sockaddr_in *)sa)->sin_port))>=servlen) ++ char *p = buf; ++ int port = ntohs(((struct sockaddr_in *)sa)->sin_port); ++ buf[0] = 0; ++ if (!(flags & NI_NUMERICSERV)) ++ reverse_services(buf, port, flags & NI_DGRAM); ++ if (!*p) ++ p = itoa(num, port); ++ if (strlen(p) >= servlen) + return EAI_OVERFLOW; +- strcpy(serv, buf); ++ strcpy(serv, p); + } + + return 0; +diff --git a/src/network/if_nametoindex.c b/src/network/if_nametoindex.c +index fb4a147..cb6ec05 100644 +--- a/src/network/if_nametoindex.c ++++ b/src/network/if_nametoindex.c +@@ -14,5 +14,5 @@ unsigned if_nametoindex(const char *name) + strncpy(ifr.ifr_name, name, sizeof ifr.ifr_name); + r = ioctl(fd, SIOCGIFINDEX, &ifr); + __syscall(SYS_close, fd); +- return r < 0 ? r : ifr.ifr_ifindex; ++ return r < 0 ? 0 : ifr.ifr_ifindex; + } +diff --git a/src/network/lookup.h b/src/network/lookup.h +index 82c969e..19c9e48 100644 +--- a/src/network/lookup.h ++++ b/src/network/lookup.h +@@ -22,5 +22,6 @@ struct service { + + int __lookup_serv(struct service buf[static MAXSERVS], const char *name, int proto, int flags); + int __lookup_name(struct address buf[static MAXADDRS], char canon[static 256], const char *name, int family, int flags); ++int __lookup_ipliteral(struct address buf[static 1], const char *name, int family); + + #endif +diff --git a/src/network/lookup_ipliteral.c b/src/network/lookup_ipliteral.c +new file mode 100644 +index 0000000..7bcb85f +--- /dev/null ++++ b/src/network/lookup_ipliteral.c +@@ -0,0 +1,52 @@ ++#include <sys/socket.h> ++#include <netinet/in.h> ++#include <netdb.h> ++#include <net/if.h> ++#include <arpa/inet.h> ++#include <limits.h> ++#include <stdlib.h> ++#include <string.h> ++#include <ctype.h> ++#include "lookup.h" ++ ++int __inet_aton(const char *, struct in_addr *); ++ ++int __lookup_ipliteral(struct address buf[static 1], const char *name, int family) ++{ ++ struct in_addr a4; ++ struct in6_addr a6; ++ if (family != AF_INET6 && __inet_aton(name, &a4)>0) { ++ memcpy(&buf[0].addr, &a4, sizeof a4); ++ buf[0].family = AF_INET; ++ buf[0].scopeid = 0; ++ return 1; ++ } ++ if (family != AF_INET) { ++ char tmp[64]; ++ char *p = strchr(name, '%'), *z; ++ unsigned long long scopeid; ++ if (p && p-name < 64) { ++ memcpy(tmp, name, p-name); ++ tmp[p-name] = 0; ++ name = tmp; ++ } ++ if (inet_pton(AF_INET6, name, &a6)<=0) return 0; ++ memcpy(&buf[0].addr, &a6, sizeof a6); ++ buf[0].family = AF_INET6; ++ if (p) { ++ if (isdigit(*++p)) scopeid = strtoull(p, &z, 10); ++ else z = p-1; ++ if (*z) { ++ if (!IN6_IS_ADDR_LINKLOCAL(&a6) && ++ !IN6_IS_ADDR_MC_LINKLOCAL(&a6)) ++ return EAI_NONAME; ++ scopeid = if_nametoindex(p); ++ if (!scopeid) return EAI_NONAME; ++ } ++ if (scopeid > UINT_MAX) return EAI_NONAME; ++ buf[0].scopeid = scopeid; ++ } ++ return 1; ++ } ++ return 0; ++} +diff --git a/src/network/lookup_name.c b/src/network/lookup_name.c +index 0292093..68b172b 100644 +--- a/src/network/lookup_name.c ++++ b/src/network/lookup_name.c +@@ -1,6 +1,7 @@ + #include <sys/socket.h> + #include <netinet/in.h> + #include <netdb.h> ++#include <net/if.h> + #include <arpa/inet.h> + #include <ctype.h> + #include <stdlib.h> +@@ -13,7 +14,7 @@ + static int is_valid_hostname(const char *host) + { + const unsigned char *s; +- if (strnlen(host, 256)-1 > 254 || mbstowcs(0, host, 0) > 255) return 0; ++ if (strnlen(host, 254)-1 >= 253 || mbstowcs(0, host, 0) == -1) return 0; + for (s=(void *)host; *s>=0x80 || *s=='.' || *s=='-' || isalnum(*s); s++); + return !*s; + } +@@ -36,23 +37,9 @@ static int name_from_null(struct address buf[static 2], const char *name, int fa + return cnt; + } + +-int __inet_aton(const char *, struct in_addr *); +- + static int name_from_numeric(struct address buf[static 1], const char *name, int family) + { +- struct in_addr a4; +- struct in6_addr a6; +- if (family != AF_INET6 && __inet_aton(name, &a4)>0) { +- memcpy(&buf[0].addr, &a4, sizeof a4); +- buf[0].family = AF_INET; +- return 1; +- } +- if (family != AF_INET && inet_pton(AF_INET6, name, &a6)>0) { +- memcpy(&buf[0].addr, &a6, sizeof a6); +- buf[0].family = AF_INET6; +- return 1; +- } +- return 0; ++ return __lookup_ipliteral(buf, name, family); + } + + static int name_from_hosts(struct address buf[static MAXADDRS], char canon[static 256], const char *name, int family) +@@ -110,11 +97,13 @@ static int dns_parse_callback(void *c, int rr, const void *data, int len, const + case RR_A: + if (len != 4) return -1; + ctx->addrs[ctx->cnt].family = AF_INET; ++ ctx->addrs[ctx->cnt].scopeid = 0; + memcpy(ctx->addrs[ctx->cnt++].addr, data, 4); + break; + case RR_AAAA: + if (len != 16) return -1; + ctx->addrs[ctx->cnt].family = AF_INET6; ++ ctx->addrs[ctx->cnt].scopeid = 0; + memcpy(ctx->addrs[ctx->cnt++].addr, data, 16); + break; + case RR_CNAME: +@@ -164,7 +153,7 @@ int __lookup_name(struct address buf[static MAXADDRS], char canon[static 256], c + *canon = 0; + if (name) { + size_t l; +- if ((l = strnlen(name, 256))-1 > 254) ++ if ((l = strnlen(name, 254))-1 >= 253) + return EAI_NONAME; + memcpy(canon, name, l+1); + } +@@ -179,10 +168,10 @@ int __lookup_name(struct address buf[static MAXADDRS], char canon[static 256], c + + /* Try each backend until there's at least one result. */ + cnt = name_from_null(buf, name, family, flags); +- if (cnt<=0) cnt = name_from_numeric(buf, name, family); +- if (cnt<=0 && !(flags & AI_NUMERICHOST)) { ++ if (!cnt) cnt = name_from_numeric(buf, name, family); ++ if (!cnt && !(flags & AI_NUMERICHOST)) { + cnt = name_from_hosts(buf, canon, name, family); +- if (cnt<=0) cnt = name_from_dns(buf, canon, name, family); ++ if (!cnt) cnt = name_from_dns(buf, canon, name, family); + } + if (cnt<=0) return cnt ? cnt : EAI_NONAME; + +@@ -204,7 +193,6 @@ int __lookup_name(struct address buf[static MAXADDRS], char canon[static 256], c + if (buf[i].family != AF_INET) continue; + memcpy(buf[i].addr+12, buf[i].addr, 4); + memcpy(buf[i].addr, "\0\0\0\0\0\0\0\0\0\0\xff\xff", 12); +- buf[i].scopeid = 0; + buf[i].family = AF_INET6; + } + } +diff --git a/src/network/res_mkquery.c b/src/network/res_mkquery.c +index f7e4e9c..7c49709 100644 +--- a/src/network/res_mkquery.c ++++ b/src/network/res_mkquery.c +@@ -10,9 +10,9 @@ int __res_mkquery(int op, const char *dname, int class, int type, + int id, i, j; + unsigned char q[280]; + struct timespec ts; +- size_t l = strnlen(dname, 256); ++ size_t l = strnlen(dname, 254); + +- if (l-1>=254 || buflen<18+l || op>15u || class>255u || type>255u) ++ if (l-1>=253 || buflen<18+l || op>15u || class>255u || type>255u) + return -1; + + /* Construct query template - ID will be filled later */ +diff --git a/src/network/res_msend.c b/src/network/res_msend.c +index a5b7793..5192b4d 100644 +--- a/src/network/res_msend.c ++++ b/src/network/res_msend.c +@@ -12,6 +12,7 @@ + #include <pthread.h> + #include "stdio_impl.h" + #include "syscall.h" ++#include "lookup.h" + + static void cleanup(void *p) + { +@@ -47,6 +48,7 @@ int __res_msend(int nqueries, const unsigned char *const *queries, + int cs; + struct pollfd pfd; + unsigned long t0, t1, t2; ++ struct address iplit; + + pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); + +@@ -76,13 +78,18 @@ int __res_msend(int nqueries, const unsigned char *const *queries, + for (z=s; *z && !isspace(*z); z++); + *z=0; + +- if (inet_pton(AF_INET, s, &ns[nns].sin.sin_addr)>0) { +- ns[nns].sin.sin_port = htons(53); +- ns[nns++].sin.sin_family = AF_INET; +- } else if (inet_pton(AF_INET6, s, &ns[nns].sin6.sin6_addr)>0) { +- sl = sizeof sa.sin6; +- ns[nns].sin6.sin6_port = htons(53); +- ns[nns++].sin6.sin6_family = family = AF_INET6; ++ if (__lookup_ipliteral(&iplit, s, AF_UNSPEC)>0) { ++ if (iplit.family == AF_INET) { ++ memcpy(&ns[nns].sin.sin_addr, iplit.addr, 4); ++ ns[nns].sin.sin_port = htons(53); ++ ns[nns++].sin.sin_family = AF_INET; ++ } else { ++ sl = sizeof sa.sin6; ++ memcpy(&ns[nns].sin6.sin6_addr, iplit.addr, 16); ++ ns[nns].sin6.sin6_port = htons(53); ++ ns[nns].sin6.sin6_scope_id = iplit.scopeid; ++ ns[nns++].sin6.sin6_family = family = AF_INET6; ++ } + } + } + if (f) __fclose_ca(f); +diff --git a/src/network/res_querydomain.c b/src/network/res_querydomain.c +index c746dbe..8ba31f4 100644 +--- a/src/network/res_querydomain.c ++++ b/src/network/res_querydomain.c +@@ -3,10 +3,10 @@ + + int res_querydomain(const char *name, const char *domain, int class, int type, unsigned char *dest, int len) + { +- char tmp[256]; +- size_t nl = strnlen(name, 256); +- size_t dl = strnlen(domain, 256); +- if (nl+dl+1 > 255) return -1; ++ char tmp[254]; ++ size_t nl = strnlen(name, 254); ++ size_t dl = strnlen(domain, 254); ++ if (nl+dl+1 > 253) return -1; + memcpy(tmp, name, nl); + tmp[nl] = '.'; + memcpy(tmp+nl+1, domain, dl+1); +diff --git a/src/stdio/vasprintf.c b/src/stdio/vasprintf.c +index 68b7246..08251bc 100644 +--- a/src/stdio/vasprintf.c ++++ b/src/stdio/vasprintf.c +@@ -3,26 +3,13 @@ + #include <stdarg.h> + #include <stdlib.h> + +-#define GUESS 240U +- + int vasprintf(char **s, const char *fmt, va_list ap) + { + va_list ap2; +- char *a; +- int l=GUESS; +- +- if (!(a=malloc(GUESS))) return -1; +- + va_copy(ap2, ap); +- l=vsnprintf(a, GUESS, fmt, ap2); ++ int l = vsnprintf(0, 0, fmt, ap2); + va_end(ap2); + +- if (l<GUESS) { +- char *b = realloc(a, l+1U); +- *s = b ? b : a; +- return l; +- } +- free(a); + if (l<0 || !(*s=malloc(l+1U))) return -1; + return vsnprintf(*s, l+1U, fmt, ap); + } diff --git a/main/musl/APKBUILD b/main/musl/APKBUILD index 12a2f43857..450d0d3d8a 100644 --- a/main/musl/APKBUILD +++ b/main/musl/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: Timo Teräs <timo.teras@iki.fi> pkgname=musl pkgver=1.1.1 -pkgrel=2 +pkgrel=3 pkgdesc="the musl c library (libc) implementation" url="http://www.musl-libc.org/" arch="all" @@ -15,6 +15,7 @@ subpackages="$pkgname-dev $pkgname-utils" source="http://www.musl-libc.org/releases/musl-$pkgver.tar.gz 0001-v1.1.1-to-76f440cf.patch 0002-76f440cf-to-d85d261e.patch + 0003-d85d261e-to-2abb70c3.patch 1001-add-basic-dns-record-parsing-functions.patch 1002-reimplement-if_nameindex-and-getifaddrs-using-netlin.patch 1003-implement-y-and-C-specifiers-in-strptime.patch @@ -122,6 +123,7 @@ utils() { md5sums="dbc08d311148e095016d9bbf6c7ffda6 musl-1.1.1.tar.gz d4a40fe1656115b2956065ab48e0b372 0001-v1.1.1-to-76f440cf.patch 0b0dce47217fe25eeb82a7f70e15629f 0002-76f440cf-to-d85d261e.patch +4e7a277d2aa6ca246bca81996f247379 0003-d85d261e-to-2abb70c3.patch a3810683ef61ac27e2f6ec9801280c81 1001-add-basic-dns-record-parsing-functions.patch 83c3bd2a50b1de5ef948704d3f4e0583 1002-reimplement-if_nameindex-and-getifaddrs-using-netlin.patch fc3feec4104a4b25781df92dd96b9eec 1003-implement-y-and-C-specifiers-in-strptime.patch @@ -135,6 +137,7 @@ cb82d21fed17a116b44b830adba71c5a getconf.c sha256sums="9dd75d6512e44d5a13254e246db56c90365894b05bab2b1127e44a31e4fd7c36 musl-1.1.1.tar.gz 40f241a8aa59621d8a9e6a616df27c38e0a622243bf7346cc98ec1c37454e92a 0001-v1.1.1-to-76f440cf.patch d0f4dbc8f0e72df02fcb12e75f829d50909c6da222a5f6a13a0e0c991f91d56e 0002-76f440cf-to-d85d261e.patch +b931c40613923925ac28a010e4ffbe13380a056dfd01eeccc3a090f598edeaff 0003-d85d261e-to-2abb70c3.patch 758390768b1bc4159d56908ca332b9640cd0552ed3b4b2b8d4a6d499c54c11a1 1001-add-basic-dns-record-parsing-functions.patch 1c25880095e869b827f02997e864fdf4bf157a4e923e52d97dbd05e657aedb70 1002-reimplement-if_nameindex-and-getifaddrs-using-netlin.patch c22338bc33e8c0c22b280c392b37a0903e13562e671f5ebade09ed5b1d33e2ae 1003-implement-y-and-C-specifiers-in-strptime.patch @@ -148,6 +151,7 @@ f79a2930a2e5bb0624321589edf8b889d1e9b603e01e6b7ae214616605b3fdd7 iconv.c" sha512sums="5182deb80a35c8a4009d71098c95a16e5ab9bd03186443917652f0c521d2980183e203256493a69e8230b6a0c4848ca8e44de9e8c851a511cd37d0d41f91b14f musl-1.1.1.tar.gz 30906a5f7a01ff05693e5a2e72f6c7e75ff7939c28a32b9e777d14d59412bb9df603a09aa8dd693e9a0b70525474a62f7bc657425032a3a5f4b339667e6f62ec 0001-v1.1.1-to-76f440cf.patch 358f3828367f5a86806ce5be5842c2be44c1a7919133ab83a7c549bc55be847fee2a938c201782db771ff6a5a994cab6ee7c2050f6ae564f4993c0b3825faa36 0002-76f440cf-to-d85d261e.patch +5bba3f6e369ae38536634cc181b629158dab515476577617024c585ad2247f17bec79b9de035063bddddad07df204654b7eae829b6deb856867907c762f5d2c7 0003-d85d261e-to-2abb70c3.patch dad965258daf69371b844f76bfe5a914b0eca0ca76f3fc340b8fd7acf598b5f87bbe6d68b1f43ed0293ee0ed3bfd85d5173ccc169aa6265646248d5b8a906708 1001-add-basic-dns-record-parsing-functions.patch 72cf33738d2cf31f6ec02312bc494d754c17470b519172bb8bd7e2e29ac3b119023088a2b3fbc0dbc2fddd0078ccbae62096106cae361f8c31d6a9950043af25 1002-reimplement-if_nameindex-and-getifaddrs-using-netlin.patch 48082d2348de40bc6b455266c5552a62e1e75f926e69116c61c8a3cb35fefdff136dc771bf25ee7d43c959834921221112ed7afcc45fcadbcf07562510786916 1003-implement-y-and-C-specifiers-in-strptime.patch |