svn commit: r309651 - in user/cperciva/freebsd-update-build/patches: 10.1-RELEASE 10.2-RELEASE 10.3-RELEASE 11.0-RELEASE 9.3-RELEASE
Gleb Smirnoff
glebius at FreeBSD.org
Tue Dec 6 19:19:20 UTC 2016
Author: glebius
Date: Tue Dec 6 19:19:17 2016
New Revision: 309651
URL: https://svnweb.freebsd.org/changeset/base/309651
Log:
Publish SA-16:36, SA-16:37, SA-16:38.
Added:
user/cperciva/freebsd-update-build/patches/10.1-RELEASE/43-SA-16:36.telnetd
user/cperciva/freebsd-update-build/patches/10.1-RELEASE/43-SA-16:37.libc
user/cperciva/freebsd-update-build/patches/10.1-RELEASE/43-SA-16:38.bhyve
user/cperciva/freebsd-update-build/patches/10.2-RELEASE/26-SA-16:36.telnetd
user/cperciva/freebsd-update-build/patches/10.2-RELEASE/26-SA-16:37.libc
user/cperciva/freebsd-update-build/patches/10.2-RELEASE/26-SA-16:38.bhyve
user/cperciva/freebsd-update-build/patches/10.3-RELEASE/13-SA-16:36.telnetd
user/cperciva/freebsd-update-build/patches/10.3-RELEASE/13-SA-16:37.libc
user/cperciva/freebsd-update-build/patches/10.3-RELEASE/13-SA-16:38.bhyve
user/cperciva/freebsd-update-build/patches/11.0-RELEASE/4-SA-16:36.telnetd
user/cperciva/freebsd-update-build/patches/11.0-RELEASE/4-SA-16:37.libc
user/cperciva/freebsd-update-build/patches/11.0-RELEASE/4-SA-16:38.bhyve
user/cperciva/freebsd-update-build/patches/9.3-RELEASE/51-SA-16:36.telnetd
user/cperciva/freebsd-update-build/patches/9.3-RELEASE/51-SA-16:37.libc
Added: user/cperciva/freebsd-update-build/patches/10.1-RELEASE/43-SA-16:36.telnetd
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ user/cperciva/freebsd-update-build/patches/10.1-RELEASE/43-SA-16:36.telnetd Tue Dec 6 19:19:17 2016 (r309651)
@@ -0,0 +1,26 @@
+--- contrib/telnet/telnetd/sys_term.c.orig
++++ contrib/telnet/telnetd/sys_term.c
+@@ -1159,7 +1159,7 @@
+ */
+ argv = (char **)malloc(sizeof(*argv) * 12);
+ if (argv == NULL)
+- return(NULL);
++ fatal(net, "failure allocating argument space");
+ *argv++ = (char *)10;
+ *argv = (char *)0;
+ }
+@@ -1170,11 +1170,12 @@
+ *argv = (char *)((long)(*argv) + 10);
+ argv = (char **)realloc(argv, sizeof(*argv)*((long)(*argv) + 2));
+ if (argv == NULL)
+- return(NULL);
++ fatal(net, "failure allocating argument space");
+ argv++;
+ cpp = &argv[(long)argv[-1] - 10];
+ }
+- *cpp++ = strdup(val);
++ if ((*cpp++ = strdup(val)) == NULL)
++ fatal(net, "failure allocating argument space");
+ *cpp = 0;
+ return(argv);
+ }
Added: user/cperciva/freebsd-update-build/patches/10.1-RELEASE/43-SA-16:37.libc
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ user/cperciva/freebsd-update-build/patches/10.1-RELEASE/43-SA-16:37.libc Tue Dec 6 19:19:17 2016 (r309651)
@@ -0,0 +1,75 @@
+--- lib/libc/net/linkaddr.c.orig
++++ lib/libc/net/linkaddr.c
+@@ -35,6 +35,7 @@
+
+ #include <sys/types.h>
+ #include <sys/socket.h>
++#include <net/if.h>
+ #include <net/if_dl.h>
+ #include <string.h>
+
+@@ -122,31 +123,47 @@
+ link_ntoa(const struct sockaddr_dl *sdl)
+ {
+ static char obuf[64];
+- char *out = obuf;
+- int i;
+- u_char *in = (u_char *)LLADDR(sdl);
+- u_char *inlim = in + sdl->sdl_alen;
+- int firsttime = 1;
++ _Static_assert(sizeof(obuf) >= IFNAMSIZ + 20, "obuf is too small");
++ char *out;
++ const char *in, *inlim;
++ int namelen, i, rem;
+
+- if (sdl->sdl_nlen) {
+- bcopy(sdl->sdl_data, obuf, sdl->sdl_nlen);
+- out += sdl->sdl_nlen;
+- if (sdl->sdl_alen)
++ namelen = (sdl->sdl_nlen <= IFNAMSIZ) ? sdl->sdl_nlen : IFNAMSIZ;
++
++ out = obuf;
++ rem = sizeof(obuf);
++ if (namelen > 0) {
++ bcopy(sdl->sdl_data, out, namelen);
++ out += namelen;
++ rem -= namelen;
++ if (sdl->sdl_alen > 0) {
+ *out++ = ':';
++ rem--;
++ }
+ }
+- while (in < inlim) {
+- if (firsttime)
+- firsttime = 0;
+- else
++
++ in = (const char *)sdl->sdl_data + sdl->sdl_nlen;
++ inlim = in + sdl->sdl_alen;
++
++ while (in < inlim && rem > 1) {
++ if (in != (const char *)sdl->sdl_data + sdl->sdl_nlen) {
+ *out++ = '.';
++ rem--;
++ }
+ i = *in++;
+ if (i > 0xf) {
+- out[1] = hexlist[i & 0xf];
++ if (rem < 3)
++ break;
++ *out++ = hexlist[i & 0xf];
+ i >>= 4;
+- out[0] = hexlist[i];
+- out += 2;
+- } else
+ *out++ = hexlist[i];
++ rem -= 2;
++ } else {
++ if (rem < 2)
++ break;
++ *out++ = hexlist[i];
++ rem++;
++ }
+ }
+ *out = 0;
+ return (obuf);
Added: user/cperciva/freebsd-update-build/patches/10.1-RELEASE/43-SA-16:38.bhyve
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ user/cperciva/freebsd-update-build/patches/10.1-RELEASE/43-SA-16:38.bhyve Tue Dec 6 19:19:17 2016 (r309651)
@@ -0,0 +1,19 @@
+--- lib/libvmmapi/vmmapi.c.orig
++++ lib/libvmmapi/vmmapi.c
+@@ -263,12 +263,14 @@
+ /* XXX VM_MMAP_SPARSE not implemented yet */
+ assert(ctx->vms == VM_MMAP_ALL);
+
+- if (gaddr < ctx->lowmem && gaddr + len <= ctx->lowmem)
++ if (gaddr < ctx->lowmem && len <= ctx->lowmem &&
++ gaddr + len <= ctx->lowmem)
+ return ((void *)(ctx->lowmem_addr + gaddr));
+
+ if (gaddr >= 4*GB) {
+ gaddr -= 4*GB;
+- if (gaddr < ctx->highmem && gaddr + len <= ctx->highmem)
++ if (gaddr < ctx->highmem && len <= ctx->highmem &&
++ gaddr + len <= ctx->highmem)
+ return ((void *)(ctx->highmem_addr + gaddr));
+ }
+
Added: user/cperciva/freebsd-update-build/patches/10.2-RELEASE/26-SA-16:36.telnetd
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ user/cperciva/freebsd-update-build/patches/10.2-RELEASE/26-SA-16:36.telnetd Tue Dec 6 19:19:17 2016 (r309651)
@@ -0,0 +1,26 @@
+--- contrib/telnet/telnetd/sys_term.c.orig
++++ contrib/telnet/telnetd/sys_term.c
+@@ -1159,7 +1159,7 @@
+ */
+ argv = (char **)malloc(sizeof(*argv) * 12);
+ if (argv == NULL)
+- return(NULL);
++ fatal(net, "failure allocating argument space");
+ *argv++ = (char *)10;
+ *argv = (char *)0;
+ }
+@@ -1170,11 +1170,12 @@
+ *argv = (char *)((long)(*argv) + 10);
+ argv = (char **)realloc(argv, sizeof(*argv)*((long)(*argv) + 2));
+ if (argv == NULL)
+- return(NULL);
++ fatal(net, "failure allocating argument space");
+ argv++;
+ cpp = &argv[(long)argv[-1] - 10];
+ }
+- *cpp++ = strdup(val);
++ if ((*cpp++ = strdup(val)) == NULL)
++ fatal(net, "failure allocating argument space");
+ *cpp = 0;
+ return(argv);
+ }
Added: user/cperciva/freebsd-update-build/patches/10.2-RELEASE/26-SA-16:37.libc
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ user/cperciva/freebsd-update-build/patches/10.2-RELEASE/26-SA-16:37.libc Tue Dec 6 19:19:17 2016 (r309651)
@@ -0,0 +1,75 @@
+--- lib/libc/net/linkaddr.c.orig
++++ lib/libc/net/linkaddr.c
+@@ -35,6 +35,7 @@
+
+ #include <sys/types.h>
+ #include <sys/socket.h>
++#include <net/if.h>
+ #include <net/if_dl.h>
+ #include <string.h>
+
+@@ -122,31 +123,47 @@
+ link_ntoa(const struct sockaddr_dl *sdl)
+ {
+ static char obuf[64];
+- char *out = obuf;
+- int i;
+- u_char *in = (u_char *)LLADDR(sdl);
+- u_char *inlim = in + sdl->sdl_alen;
+- int firsttime = 1;
++ _Static_assert(sizeof(obuf) >= IFNAMSIZ + 20, "obuf is too small");
++ char *out;
++ const char *in, *inlim;
++ int namelen, i, rem;
+
+- if (sdl->sdl_nlen) {
+- bcopy(sdl->sdl_data, obuf, sdl->sdl_nlen);
+- out += sdl->sdl_nlen;
+- if (sdl->sdl_alen)
++ namelen = (sdl->sdl_nlen <= IFNAMSIZ) ? sdl->sdl_nlen : IFNAMSIZ;
++
++ out = obuf;
++ rem = sizeof(obuf);
++ if (namelen > 0) {
++ bcopy(sdl->sdl_data, out, namelen);
++ out += namelen;
++ rem -= namelen;
++ if (sdl->sdl_alen > 0) {
+ *out++ = ':';
++ rem--;
++ }
+ }
+- while (in < inlim) {
+- if (firsttime)
+- firsttime = 0;
+- else
++
++ in = (const char *)sdl->sdl_data + sdl->sdl_nlen;
++ inlim = in + sdl->sdl_alen;
++
++ while (in < inlim && rem > 1) {
++ if (in != (const char *)sdl->sdl_data + sdl->sdl_nlen) {
+ *out++ = '.';
++ rem--;
++ }
+ i = *in++;
+ if (i > 0xf) {
+- out[1] = hexlist[i & 0xf];
++ if (rem < 3)
++ break;
++ *out++ = hexlist[i & 0xf];
+ i >>= 4;
+- out[0] = hexlist[i];
+- out += 2;
+- } else
+ *out++ = hexlist[i];
++ rem -= 2;
++ } else {
++ if (rem < 2)
++ break;
++ *out++ = hexlist[i];
++ rem++;
++ }
+ }
+ *out = 0;
+ return (obuf);
Added: user/cperciva/freebsd-update-build/patches/10.2-RELEASE/26-SA-16:38.bhyve
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ user/cperciva/freebsd-update-build/patches/10.2-RELEASE/26-SA-16:38.bhyve Tue Dec 6 19:19:17 2016 (r309651)
@@ -0,0 +1,19 @@
+--- lib/libvmmapi/vmmapi.c.orig
++++ lib/libvmmapi/vmmapi.c
+@@ -263,12 +263,14 @@
+ /* XXX VM_MMAP_SPARSE not implemented yet */
+ assert(ctx->vms == VM_MMAP_ALL);
+
+- if (gaddr < ctx->lowmem && gaddr + len <= ctx->lowmem)
++ if (gaddr < ctx->lowmem && len <= ctx->lowmem &&
++ gaddr + len <= ctx->lowmem)
+ return ((void *)(ctx->lowmem_addr + gaddr));
+
+ if (gaddr >= 4*GB) {
+ gaddr -= 4*GB;
+- if (gaddr < ctx->highmem && gaddr + len <= ctx->highmem)
++ if (gaddr < ctx->highmem && len <= ctx->highmem &&
++ gaddr + len <= ctx->highmem)
+ return ((void *)(ctx->highmem_addr + gaddr));
+ }
+
Added: user/cperciva/freebsd-update-build/patches/10.3-RELEASE/13-SA-16:36.telnetd
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ user/cperciva/freebsd-update-build/patches/10.3-RELEASE/13-SA-16:36.telnetd Tue Dec 6 19:19:17 2016 (r309651)
@@ -0,0 +1,26 @@
+--- contrib/telnet/telnetd/sys_term.c.orig
++++ contrib/telnet/telnetd/sys_term.c
+@@ -1159,7 +1159,7 @@
+ */
+ argv = (char **)malloc(sizeof(*argv) * 12);
+ if (argv == NULL)
+- return(NULL);
++ fatal(net, "failure allocating argument space");
+ *argv++ = (char *)10;
+ *argv = (char *)0;
+ }
+@@ -1170,11 +1170,12 @@
+ *argv = (char *)((long)(*argv) + 10);
+ argv = (char **)realloc(argv, sizeof(*argv)*((long)(*argv) + 2));
+ if (argv == NULL)
+- return(NULL);
++ fatal(net, "failure allocating argument space");
+ argv++;
+ cpp = &argv[(long)argv[-1] - 10];
+ }
+- *cpp++ = strdup(val);
++ if ((*cpp++ = strdup(val)) == NULL)
++ fatal(net, "failure allocating argument space");
+ *cpp = 0;
+ return(argv);
+ }
Added: user/cperciva/freebsd-update-build/patches/10.3-RELEASE/13-SA-16:37.libc
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ user/cperciva/freebsd-update-build/patches/10.3-RELEASE/13-SA-16:37.libc Tue Dec 6 19:19:17 2016 (r309651)
@@ -0,0 +1,75 @@
+--- lib/libc/net/linkaddr.c.orig
++++ lib/libc/net/linkaddr.c
+@@ -35,6 +35,7 @@
+
+ #include <sys/types.h>
+ #include <sys/socket.h>
++#include <net/if.h>
+ #include <net/if_dl.h>
+ #include <string.h>
+
+@@ -122,31 +123,47 @@
+ link_ntoa(const struct sockaddr_dl *sdl)
+ {
+ static char obuf[64];
+- char *out = obuf;
+- int i;
+- u_char *in = (u_char *)LLADDR(sdl);
+- u_char *inlim = in + sdl->sdl_alen;
+- int firsttime = 1;
++ _Static_assert(sizeof(obuf) >= IFNAMSIZ + 20, "obuf is too small");
++ char *out;
++ const char *in, *inlim;
++ int namelen, i, rem;
+
+- if (sdl->sdl_nlen) {
+- bcopy(sdl->sdl_data, obuf, sdl->sdl_nlen);
+- out += sdl->sdl_nlen;
+- if (sdl->sdl_alen)
++ namelen = (sdl->sdl_nlen <= IFNAMSIZ) ? sdl->sdl_nlen : IFNAMSIZ;
++
++ out = obuf;
++ rem = sizeof(obuf);
++ if (namelen > 0) {
++ bcopy(sdl->sdl_data, out, namelen);
++ out += namelen;
++ rem -= namelen;
++ if (sdl->sdl_alen > 0) {
+ *out++ = ':';
++ rem--;
++ }
+ }
+- while (in < inlim) {
+- if (firsttime)
+- firsttime = 0;
+- else
++
++ in = (const char *)sdl->sdl_data + sdl->sdl_nlen;
++ inlim = in + sdl->sdl_alen;
++
++ while (in < inlim && rem > 1) {
++ if (in != (const char *)sdl->sdl_data + sdl->sdl_nlen) {
+ *out++ = '.';
++ rem--;
++ }
+ i = *in++;
+ if (i > 0xf) {
+- out[1] = hexlist[i & 0xf];
++ if (rem < 3)
++ break;
++ *out++ = hexlist[i & 0xf];
+ i >>= 4;
+- out[0] = hexlist[i];
+- out += 2;
+- } else
+ *out++ = hexlist[i];
++ rem -= 2;
++ } else {
++ if (rem < 2)
++ break;
++ *out++ = hexlist[i];
++ rem++;
++ }
+ }
+ *out = 0;
+ return (obuf);
Added: user/cperciva/freebsd-update-build/patches/10.3-RELEASE/13-SA-16:38.bhyve
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ user/cperciva/freebsd-update-build/patches/10.3-RELEASE/13-SA-16:38.bhyve Tue Dec 6 19:19:17 2016 (r309651)
@@ -0,0 +1,24 @@
+--- lib/libvmmapi/vmmapi.c.orig
++++ lib/libvmmapi/vmmapi.c
+@@ -426,13 +426,18 @@
+ {
+
+ if (ctx->lowmem > 0) {
+- if (gaddr < ctx->lowmem && gaddr + len <= ctx->lowmem)
++ if (gaddr < ctx->lowmem && len <= ctx->lowmem &&
++ gaddr + len <= ctx->lowmem)
+ return (ctx->baseaddr + gaddr);
+ }
+
+ if (ctx->highmem > 0) {
+- if (gaddr >= 4*GB && gaddr + len <= 4*GB + ctx->highmem)
+- return (ctx->baseaddr + gaddr);
++ if (gaddr >= 4*GB) {
++ if (gaddr < 4*GB + ctx->highmem &&
++ len <= ctx->highmem &&
++ gaddr + len <= 4*GB + ctx->highmem)
++ return (ctx->baseaddr + gaddr);
++ }
+ }
+
+ return (NULL);
Added: user/cperciva/freebsd-update-build/patches/11.0-RELEASE/4-SA-16:36.telnetd
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ user/cperciva/freebsd-update-build/patches/11.0-RELEASE/4-SA-16:36.telnetd Tue Dec 6 19:19:17 2016 (r309651)
@@ -0,0 +1,26 @@
+--- contrib/telnet/telnetd/sys_term.c.orig
++++ contrib/telnet/telnetd/sys_term.c
+@@ -1159,7 +1159,7 @@
+ */
+ argv = (char **)malloc(sizeof(*argv) * 12);
+ if (argv == NULL)
+- return(NULL);
++ fatal(net, "failure allocating argument space");
+ *argv++ = (char *)10;
+ *argv = (char *)0;
+ }
+@@ -1170,11 +1170,12 @@
+ *argv = (char *)((long)(*argv) + 10);
+ argv = (char **)realloc(argv, sizeof(*argv)*((long)(*argv) + 2));
+ if (argv == NULL)
+- return(NULL);
++ fatal(net, "failure allocating argument space");
+ argv++;
+ cpp = &argv[(long)argv[-1] - 10];
+ }
+- *cpp++ = strdup(val);
++ if ((*cpp++ = strdup(val)) == NULL)
++ fatal(net, "failure allocating argument space");
+ *cpp = 0;
+ return(argv);
+ }
Added: user/cperciva/freebsd-update-build/patches/11.0-RELEASE/4-SA-16:37.libc
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ user/cperciva/freebsd-update-build/patches/11.0-RELEASE/4-SA-16:37.libc Tue Dec 6 19:19:17 2016 (r309651)
@@ -0,0 +1,75 @@
+--- lib/libc/net/linkaddr.c.orig
++++ lib/libc/net/linkaddr.c
+@@ -35,6 +35,7 @@
+
+ #include <sys/types.h>
+ #include <sys/socket.h>
++#include <net/if.h>
+ #include <net/if_dl.h>
+ #include <string.h>
+
+@@ -122,31 +123,47 @@
+ link_ntoa(const struct sockaddr_dl *sdl)
+ {
+ static char obuf[64];
+- char *out = obuf;
+- int i;
+- u_char *in = (u_char *)LLADDR(sdl);
+- u_char *inlim = in + sdl->sdl_alen;
+- int firsttime = 1;
++ _Static_assert(sizeof(obuf) >= IFNAMSIZ + 20, "obuf is too small");
++ char *out;
++ const char *in, *inlim;
++ int namelen, i, rem;
+
+- if (sdl->sdl_nlen) {
+- bcopy(sdl->sdl_data, obuf, sdl->sdl_nlen);
+- out += sdl->sdl_nlen;
+- if (sdl->sdl_alen)
++ namelen = (sdl->sdl_nlen <= IFNAMSIZ) ? sdl->sdl_nlen : IFNAMSIZ;
++
++ out = obuf;
++ rem = sizeof(obuf);
++ if (namelen > 0) {
++ bcopy(sdl->sdl_data, out, namelen);
++ out += namelen;
++ rem -= namelen;
++ if (sdl->sdl_alen > 0) {
+ *out++ = ':';
++ rem--;
++ }
+ }
+- while (in < inlim) {
+- if (firsttime)
+- firsttime = 0;
+- else
++
++ in = (const char *)sdl->sdl_data + sdl->sdl_nlen;
++ inlim = in + sdl->sdl_alen;
++
++ while (in < inlim && rem > 1) {
++ if (in != (const char *)sdl->sdl_data + sdl->sdl_nlen) {
+ *out++ = '.';
++ rem--;
++ }
+ i = *in++;
+ if (i > 0xf) {
+- out[1] = hexlist[i & 0xf];
++ if (rem < 3)
++ break;
++ *out++ = hexlist[i & 0xf];
+ i >>= 4;
+- out[0] = hexlist[i];
+- out += 2;
+- } else
+ *out++ = hexlist[i];
++ rem -= 2;
++ } else {
++ if (rem < 2)
++ break;
++ *out++ = hexlist[i];
++ rem++;
++ }
+ }
+ *out = 0;
+ return (obuf);
Added: user/cperciva/freebsd-update-build/patches/11.0-RELEASE/4-SA-16:38.bhyve
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ user/cperciva/freebsd-update-build/patches/11.0-RELEASE/4-SA-16:38.bhyve Tue Dec 6 19:19:17 2016 (r309651)
@@ -0,0 +1,24 @@
+--- lib/libvmmapi/vmmapi.c.orig
++++ lib/libvmmapi/vmmapi.c
+@@ -426,13 +426,18 @@
+ {
+
+ if (ctx->lowmem > 0) {
+- if (gaddr < ctx->lowmem && gaddr + len <= ctx->lowmem)
++ if (gaddr < ctx->lowmem && len <= ctx->lowmem &&
++ gaddr + len <= ctx->lowmem)
+ return (ctx->baseaddr + gaddr);
+ }
+
+ if (ctx->highmem > 0) {
+- if (gaddr >= 4*GB && gaddr + len <= 4*GB + ctx->highmem)
+- return (ctx->baseaddr + gaddr);
++ if (gaddr >= 4*GB) {
++ if (gaddr < 4*GB + ctx->highmem &&
++ len <= ctx->highmem &&
++ gaddr + len <= 4*GB + ctx->highmem)
++ return (ctx->baseaddr + gaddr);
++ }
+ }
+
+ return (NULL);
Added: user/cperciva/freebsd-update-build/patches/9.3-RELEASE/51-SA-16:36.telnetd
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ user/cperciva/freebsd-update-build/patches/9.3-RELEASE/51-SA-16:36.telnetd Tue Dec 6 19:19:17 2016 (r309651)
@@ -0,0 +1,26 @@
+--- contrib/telnet/telnetd/sys_term.c.orig
++++ contrib/telnet/telnetd/sys_term.c
+@@ -1159,7 +1159,7 @@
+ */
+ argv = (char **)malloc(sizeof(*argv) * 12);
+ if (argv == NULL)
+- return(NULL);
++ fatal(net, "failure allocating argument space");
+ *argv++ = (char *)10;
+ *argv = (char *)0;
+ }
+@@ -1170,11 +1170,12 @@
+ *argv = (char *)((long)(*argv) + 10);
+ argv = (char **)realloc(argv, sizeof(*argv)*((long)(*argv) + 2));
+ if (argv == NULL)
+- return(NULL);
++ fatal(net, "failure allocating argument space");
+ argv++;
+ cpp = &argv[(long)argv[-1] - 10];
+ }
+- *cpp++ = strdup(val);
++ if ((*cpp++ = strdup(val)) == NULL)
++ fatal(net, "failure allocating argument space");
+ *cpp = 0;
+ return(argv);
+ }
Added: user/cperciva/freebsd-update-build/patches/9.3-RELEASE/51-SA-16:37.libc
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ user/cperciva/freebsd-update-build/patches/9.3-RELEASE/51-SA-16:37.libc Tue Dec 6 19:19:17 2016 (r309651)
@@ -0,0 +1,75 @@
+--- lib/libc/net/linkaddr.c.orig
++++ lib/libc/net/linkaddr.c
+@@ -35,6 +35,7 @@
+
+ #include <sys/types.h>
+ #include <sys/socket.h>
++#include <net/if.h>
+ #include <net/if_dl.h>
+ #include <string.h>
+
+@@ -122,31 +123,47 @@
+ link_ntoa(const struct sockaddr_dl *sdl)
+ {
+ static char obuf[64];
+- char *out = obuf;
+- int i;
+- u_char *in = (u_char *)LLADDR(sdl);
+- u_char *inlim = in + sdl->sdl_alen;
+- int firsttime = 1;
++ _Static_assert(sizeof(obuf) >= IFNAMSIZ + 20, "obuf is too small");
++ char *out;
++ const char *in, *inlim;
++ int namelen, i, rem;
+
+- if (sdl->sdl_nlen) {
+- bcopy(sdl->sdl_data, obuf, sdl->sdl_nlen);
+- out += sdl->sdl_nlen;
+- if (sdl->sdl_alen)
++ namelen = (sdl->sdl_nlen <= IFNAMSIZ) ? sdl->sdl_nlen : IFNAMSIZ;
++
++ out = obuf;
++ rem = sizeof(obuf);
++ if (namelen > 0) {
++ bcopy(sdl->sdl_data, out, namelen);
++ out += namelen;
++ rem -= namelen;
++ if (sdl->sdl_alen > 0) {
+ *out++ = ':';
++ rem--;
++ }
+ }
+- while (in < inlim) {
+- if (firsttime)
+- firsttime = 0;
+- else
++
++ in = (const char *)sdl->sdl_data + sdl->sdl_nlen;
++ inlim = in + sdl->sdl_alen;
++
++ while (in < inlim && rem > 1) {
++ if (in != (const char *)sdl->sdl_data + sdl->sdl_nlen) {
+ *out++ = '.';
++ rem--;
++ }
+ i = *in++;
+ if (i > 0xf) {
+- out[1] = hexlist[i & 0xf];
++ if (rem < 3)
++ break;
++ *out++ = hexlist[i & 0xf];
+ i >>= 4;
+- out[0] = hexlist[i];
+- out += 2;
+- } else
+ *out++ = hexlist[i];
++ rem -= 2;
++ } else {
++ if (rem < 2)
++ break;
++ *out++ = hexlist[i];
++ rem++;
++ }
+ }
+ *out = 0;
+ return (obuf);
More information about the svn-src-user
mailing list