mirror of
https://github.com/opnsense/src.git
synced 2026-05-26 03:08:23 -04:00
Fix possible login(1) argument injection in telnetd(8). [SA-16:36]
Fix link_ntoa(3) buffer overflow in libc. [SA-16:37] Fix possible escape from bhyve(8) virtual machine. [SA-16:38] Fix warnings about valid time zone abbreviations. [EN-16:19] Update timezone database information. [EN-16:20] Fix incorrectly defined unicode character(s). [EN-16:21] Security: FreeBSD-SA-16:36.telnetd Security: FreeBSD-SA-16:37.libc Security: FreeBSD-SA-16:38.bhyve Errata Notice: FreeBSD-EN-16:19.tzcode Errata Notice: FreeBSD-EN-16:20.tzdata Errata Notice: FreeBSD-EN-16:21.localedef Approved by: so
This commit is contained in:
parent
bc28f716c2
commit
98fe4468b6
5 changed files with 61 additions and 24 deletions
14
UPDATING
14
UPDATING
|
|
@ -16,6 +16,20 @@ from older versions of FreeBSD, try WITHOUT_CLANG and WITH_GCC to bootstrap to
|
|||
the tip of head, and then rebuild without this option. The bootstrap process
|
||||
from older version of current across the gcc/clang cutover is a bit fragile.
|
||||
|
||||
20161206 p4 FreeBSD-SA-16:36.telnetd
|
||||
FreeBSD-SA-16:37.libc
|
||||
FreeBSD-SA-16:38.bhyve
|
||||
FreeBSD-EN-16:19.tzcode
|
||||
FreeBSD-EN-16:20.tzdata
|
||||
FreeBSD-EN-16:21.localedef
|
||||
|
||||
Fix possible login(1) argument injection in telnetd(8). [SA-16:36]
|
||||
Fix link_ntoa(3) buffer overflow in libc. [SA-16:37]
|
||||
Fix possible escape from bhyve(8) virtual machine. [SA-16:38]
|
||||
Fix warnings about valid time zone abbreviations. [EN-16:19]
|
||||
Update timezone database information. [EN-16:20]
|
||||
Fix incorrectly defined unicode character(s). [EN-16:21]
|
||||
|
||||
20161102 p3 FreeBSD-SA-16:33.openssh
|
||||
|
||||
Fix Fix OpenSSH remote Denial of Service vulnerability.
|
||||
|
|
|
|||
|
|
@ -1159,7 +1159,7 @@ addarg(char **argv, const char *val)
|
|||
*/
|
||||
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 @@ addarg(char **argv, const char *val)
|
|||
*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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ __FBSDID("$FreeBSD$");
|
|||
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <net/if.h>
|
||||
#include <net/if_dl.h>
|
||||
#include <string.h>
|
||||
|
||||
|
|
@ -122,31 +123,47 @@ char *
|
|||
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);
|
||||
|
|
|
|||
|
|
@ -426,13 +426,18 @@ vm_map_gpa(struct vmctx *ctx, vm_paddr_t gaddr, size_t len)
|
|||
{
|
||||
|
||||
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);
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
TYPE="FreeBSD"
|
||||
REVISION="11.0"
|
||||
BRANCH="RELEASE-p3"
|
||||
BRANCH="RELEASE-p4"
|
||||
if [ -n "${BRANCH_OVERRIDE}" ]; then
|
||||
BRANCH=${BRANCH_OVERRIDE}
|
||||
fi
|
||||
|
|
|
|||
Loading…
Reference in a new issue