svn commit: r188699 - head/contrib/telnet/telnetd releng/7.0
releng/7.0/contrib/telnet/telnetd releng/7.0/sys/conf
releng/7.1 releng/7.1/contrib/telnet/telnetd
releng/7.1/sys/conf stable/7/contrib/...
Colin Percival
cperciva at FreeBSD.org
Mon Feb 16 13:56:21 PST 2009
Author: cperciva
Date: Mon Feb 16 21:56:17 2009
New Revision: 188699
URL: http://svn.freebsd.org/changeset/base/188699
Log:
Correctly scrub telnetd's environment.
Approved by: so (cperciva)
Security: FreeBSD-SA-09:05.telnetd
Modified:
releng/7.0/UPDATING
releng/7.0/contrib/telnet/telnetd/sys_term.c
releng/7.0/sys/conf/newvers.sh
releng/7.1/UPDATING
releng/7.1/contrib/telnet/telnetd/sys_term.c
releng/7.1/sys/conf/newvers.sh
Changes in other areas also in this revision:
Modified:
head/contrib/telnet/telnetd/sys_term.c
stable/7/contrib/telnet/telnetd/sys_term.c
Modified: releng/7.0/UPDATING
==============================================================================
--- releng/7.0/UPDATING Mon Feb 16 21:42:41 2009 (r188698)
+++ releng/7.0/UPDATING Mon Feb 16 21:56:17 2009 (r188699)
@@ -8,6 +8,9 @@ Items affecting the ports and packages s
/usr/ports/UPDATING. Please read that file before running
portupgrade.
+20090216: p10 FreeBSD-SA-09:05.telnetd
+ Correctly scrub telnetd's environment.
+
20090113: p9 FreeBSD-SA-09:03.ntpd, FreeBSD-SA-09:04.bind
Correct ntpd cryptographic signature bypass. [09:03]
Modified: releng/7.0/contrib/telnet/telnetd/sys_term.c
==============================================================================
--- releng/7.0/contrib/telnet/telnetd/sys_term.c Mon Feb 16 21:42:41 2009 (r188698)
+++ releng/7.0/contrib/telnet/telnetd/sys_term.c Mon Feb 16 21:56:17 2009 (r188699)
@@ -1285,8 +1285,18 @@ scrub_env(void)
char **cpp, **cpp2;
const char **p;
-
- for (cpp2 = cpp = environ; *cpp; cpp++) {
+ char ** new_environ;
+ size_t count;
+
+ /* Allocate space for scrubbed environment. */
+ for (count = 1, cpp = environ; *cpp; count++, cpp++)
+ continue;
+ if ((new_environ = malloc(count * sizeof(char *))) == NULL) {
+ environ = NULL;
+ return;
+ }
+
+ for (cpp2 = new_environ, cpp = environ; *cpp; cpp++) {
int reject_it = 0;
for(p = rej; *p; p++)
@@ -1300,10 +1310,15 @@ scrub_env(void)
for(p = acc; *p; p++)
if(strncmp(*cpp, *p, strlen(*p)) == 0)
break;
- if(*p != NULL)
- *cpp2++ = *cpp;
+ if(*p != NULL) {
+ if ((*cpp2++ = strdup(*cpp)) == NULL) {
+ environ = new_environ;
+ return;
+ }
+ }
}
*cpp2 = NULL;
+ environ = new_environ;
}
/*
Modified: releng/7.0/sys/conf/newvers.sh
==============================================================================
--- releng/7.0/sys/conf/newvers.sh Mon Feb 16 21:42:41 2009 (r188698)
+++ releng/7.0/sys/conf/newvers.sh Mon Feb 16 21:56:17 2009 (r188699)
@@ -32,7 +32,7 @@
TYPE="FreeBSD"
REVISION="7.0"
-BRANCH="RELEASE-p9"
+BRANCH="RELEASE-p10"
if [ "X${BRANCH_OVERRIDE}" != "X" ]; then
BRANCH=${BRANCH_OVERRIDE}
fi
Modified: releng/7.1/UPDATING
==============================================================================
--- releng/7.1/UPDATING Mon Feb 16 21:42:41 2009 (r188698)
+++ releng/7.1/UPDATING Mon Feb 16 21:56:17 2009 (r188699)
@@ -8,6 +8,9 @@ Items affecting the ports and packages s
/usr/ports/UPDATING. Please read that file before running
portupgrade.
+20090216: p3 FreeBSD-SA-09:05.telnetd
+ Correctly scrub telnetd's environment.
+
20090113: p2 FreeBSD-SA-09:03.ntpd, FreeBSD-SA-09:04.bind
Correct ntpd cryptographic signature bypass. [09:03]
Modified: releng/7.1/contrib/telnet/telnetd/sys_term.c
==============================================================================
--- releng/7.1/contrib/telnet/telnetd/sys_term.c Mon Feb 16 21:42:41 2009 (r188698)
+++ releng/7.1/contrib/telnet/telnetd/sys_term.c Mon Feb 16 21:56:17 2009 (r188699)
@@ -1285,8 +1285,18 @@ scrub_env(void)
char **cpp, **cpp2;
const char **p;
-
- for (cpp2 = cpp = environ; *cpp; cpp++) {
+ char ** new_environ;
+ size_t count;
+
+ /* Allocate space for scrubbed environment. */
+ for (count = 1, cpp = environ; *cpp; count++, cpp++)
+ continue;
+ if ((new_environ = malloc(count * sizeof(char *))) == NULL) {
+ environ = NULL;
+ return;
+ }
+
+ for (cpp2 = new_environ, cpp = environ; *cpp; cpp++) {
int reject_it = 0;
for(p = rej; *p; p++)
@@ -1300,10 +1310,15 @@ scrub_env(void)
for(p = acc; *p; p++)
if(strncmp(*cpp, *p, strlen(*p)) == 0)
break;
- if(*p != NULL)
- *cpp2++ = *cpp;
+ if(*p != NULL) {
+ if ((*cpp2++ = strdup(*cpp)) == NULL) {
+ environ = new_environ;
+ return;
+ }
+ }
}
*cpp2 = NULL;
+ environ = new_environ;
}
/*
Modified: releng/7.1/sys/conf/newvers.sh
==============================================================================
--- releng/7.1/sys/conf/newvers.sh Mon Feb 16 21:42:41 2009 (r188698)
+++ releng/7.1/sys/conf/newvers.sh Mon Feb 16 21:56:17 2009 (r188699)
@@ -32,7 +32,7 @@
TYPE="FreeBSD"
REVISION="7.1"
-BRANCH="RELEASE-p2"
+BRANCH="RELEASE-p3"
if [ "X${BRANCH_OVERRIDE}" != "X" ]; then
BRANCH=${BRANCH_OVERRIDE}
fi
More information about the svn-src-all
mailing list