On 05/07/12 07:00, Yves-Alexis Perez wrote: > Can you show us a debdiff for the package you intend to upload to > stable-security?
Hi, Please find debdiff attached. Thank you! Regards, -- Steven Chamberlain ste...@pyro.eu.org
diff -u kfreebsd-8-8.1+dfsg/debian/changelog kfreebsd-8-8.1+dfsg/debian/changelog --- kfreebsd-8-8.1+dfsg/debian/changelog +++ kfreebsd-8-8.1+dfsg/debian/changelog @@ -1,3 +1,12 @@ +kfreebsd-8 (8.1+dfsg-8+squeeze3) stable-security; urgency=medium + + [ Steven Chamberlain ] + * Apply upstream SA-12:04.sysret patch (CVE-2012-0217) (Closes: #677297) + - Include correction from upstream (r237241) + * Apply upstream EN-12:02.ipv6refcount patch (Closes: #677738) + + -- GNU/kFreeBSD Maintainers <debian-bsd@lists.debian.org> Tue, 19 Jun 2012 13:18:39 +0100 + kfreebsd-8 (8.1+dfsg-8+squeeze2) stable-security; urgency=low * Add 000_unix_socket_overflow.diff and 918_unix_socket_overflow.diff: diff -u kfreebsd-8-8.1+dfsg/debian/patches/series kfreebsd-8-8.1+dfsg/debian/patches/series --- kfreebsd-8-8.1+dfsg/debian/patches/series +++ kfreebsd-8-8.1+dfsg/debian/patches/series @@ -1,3 +1,5 @@ +SA-12_04.sysret.patch +EN-12_02.ipv6refcount.patch 000_adaptive_machine_arch.diff 000_ata.diff 000_coda.diff only in patch2: unchanged: --- kfreebsd-8-8.1+dfsg.orig/debian/patches/SA-12_04.sysret.patch +++ kfreebsd-8-8.1+dfsg/debian/patches/SA-12_04.sysret.patch @@ -0,0 +1,37 @@ +Description: + Correct a privilege escalation when returning from kernel if + running FreeBSD/amd64 on non-AMD processors. [12:04] + . + Includes a corrected patch from upstream, as the original commit to + RELENG_8_1 accidentally applied it to the wrong location. +Origin: vendor, http://security.freebsd.org/patches/SA-12:04/sysret.patch +Bug: http://security.freebsd.org/advisories/FreeBSD-SA-12:04.sysret.asc +Bug-Debian: http://bugs.debian.org/677297 +Applied-Upstream: http://svnweb.freebsd.org/base?view=revision&revision=237241 + +Index: kfreebsd-8-8.1+dfsg/sys/amd64/amd64/trap.c +=================================================================== +--- kfreebsd-8-8.1+dfsg.orig/sys/amd64/amd64/trap.c 2012-06-17 13:55:31.000000000 +0100 ++++ kfreebsd-8-8.1+dfsg/sys/amd64/amd64/trap.c 2012-06-19 12:44:37.299956401 +0100 +@@ -1010,4 +1010,21 @@ + STOPEVENT(p, S_SCX, sa.code); + + PTRACESTOP_SC(p, td, S_PT_SCX); ++ ++ /* ++ * If the user-supplied value of %rip is not a canonical ++ * address, then some CPUs will trigger a ring 0 #GP during ++ * the sysret instruction. However, the fault handler would ++ * execute with the user's %gs and %rsp in ring 0 which would ++ * not be safe. Instead, preemptively kill the thread with a ++ * SIGBUS. ++ */ ++ if (td->td_frame->tf_rip >= VM_MAXUSER_ADDRESS) { ++ ksiginfo_init_trap(&ksi); ++ ksi.ksi_signo = SIGBUS; ++ ksi.ksi_code = BUS_OBJERR; ++ ksi.ksi_trapno = T_PROTFLT; ++ ksi.ksi_addr = (void *)td->td_frame->tf_rip; ++ trapsignal(td, &ksi); ++ } + } only in patch2: unchanged: --- kfreebsd-8-8.1+dfsg.orig/debian/patches/EN-12_02.ipv6refcount.patch +++ kfreebsd-8-8.1+dfsg/debian/patches/EN-12_02.ipv6refcount.patch @@ -0,0 +1,134 @@ +Description: + Fix reference count errors in IPv6 code. [EN-12:02] +Origin: vendor, http://security.freebsd.org/patches/EN-12:02/ipv6refcount.patch +Bug: http://security.freebsd.org/advisories/FreeBSD-EN-12:02.ipv6refcount.asc +Applied-Upstream: http://svnweb.freebsd.org/base?view=revision&revision=236953 + +Index: kfreebsd-8-8.1+dfsg/sys/netinet6/in6.c +=================================================================== +--- kfreebsd-8-8.1+dfsg.orig/sys/netinet6/in6.c 2012-06-16 19:00:59.000000000 +0100 ++++ kfreebsd-8-8.1+dfsg/sys/netinet6/in6.c 2012-06-16 19:03:42.829835350 +0100 +@@ -1370,6 +1370,8 @@ + } + + cleanup: ++ if (ifa0 != NULL) ++ ifa_free(ifa0); + + plen = in6_mask2len(&ia->ia_prefixmask.sin6_addr, NULL); /* XXX */ + if ((ia->ia_flags & IFA_ROUTE) && plen == 128) { +@@ -1394,8 +1396,6 @@ + return; + ia->ia_flags &= ~IFA_ROUTE; + } +- if (ifa0 != NULL) +- ifa_free(ifa0); + + in6_unlink_ifa(ia, ifp); + } +@@ -1549,14 +1549,19 @@ + hostid = IFA_IN6(ifa); + + /* prefixlen must be <= 64. */ +- if (64 < iflr->prefixlen) ++ if (64 < iflr->prefixlen) { ++ if (ifa != NULL) ++ ifa_free(ifa); + return EINVAL; ++ } + prefixlen = iflr->prefixlen; + + /* hostid part must be zero. */ + sin6 = (struct sockaddr_in6 *)&iflr->addr; + if (sin6->sin6_addr.s6_addr32[2] != 0 || + sin6->sin6_addr.s6_addr32[3] != 0) { ++ if (ifa != NULL) ++ ifa_free(ifa); + return EINVAL; + } + } else +@@ -2144,14 +2149,20 @@ + IN6_IFADDR_RUNLOCK(); + return (struct in6_ifaddr *)ifa; + } +- IN6_IFADDR_RUNLOCK(); + + /* use the last-resort values, that are, deprecated addresses */ +- if (dep[0]) ++ if (dep[0]) { ++ ifa_ref((struct ifaddr *)dep[0]); ++ IN6_IFADDR_RUNLOCK(); + return dep[0]; +- if (dep[1]) ++ } ++ if (dep[1]) { ++ ifa_ref((struct ifaddr *)dep[1]); ++ IN6_IFADDR_RUNLOCK(); + return dep[1]; ++ } + ++ IN6_IFADDR_RUNLOCK(); + return NULL; + } + +Index: kfreebsd-8-8.1+dfsg/sys/netinet6/ip6_input.c +=================================================================== +--- kfreebsd-8-8.1+dfsg.orig/sys/netinet6/ip6_input.c 2012-06-16 19:00:59.000000000 +0100 ++++ kfreebsd-8-8.1+dfsg/sys/netinet6/ip6_input.c 2012-06-16 19:03:42.838808064 +0100 +@@ -632,19 +632,23 @@ + * as our interface address (e.g. multicast addresses, addresses + * within FAITH prefixes and such). + */ +- if (deliverifp && !ip6_getdstifaddr(m)) { ++ if (deliverifp) { + struct in6_ifaddr *ia6; + +- ia6 = in6_ifawithifp(deliverifp, &ip6->ip6_dst); +- if (ia6) { +- if (!ip6_setdstifaddr(m, ia6)) { +- /* +- * XXX maybe we should drop the packet here, +- * as we could not provide enough information +- * to the upper layers. +- */ +- } ++ if ((ia6 = ip6_getdstifaddr(m)) != NULL) { + ifa_free(&ia6->ia_ifa); ++ } else { ++ ia6 = in6_ifawithifp(deliverifp, &ip6->ip6_dst); ++ if (ia6) { ++ if (!ip6_setdstifaddr(m, ia6)) { ++ /* ++ * XXX maybe we should drop the packet here, ++ * as we could not provide enough information ++ * to the upper layers. ++ */ ++ } ++ ifa_free(&ia6->ia_ifa); ++ } + } + } + +Index: kfreebsd-8-8.1+dfsg/sys/netinet/tcp_input.c +=================================================================== +--- kfreebsd-8-8.1+dfsg.orig/sys/netinet/tcp_input.c 2012-06-16 19:00:59.000000000 +0100 ++++ kfreebsd-8-8.1+dfsg/sys/netinet/tcp_input.c 2012-06-16 19:03:42.849828260 +0100 +@@ -293,6 +293,8 @@ + (caddr_t)&ip6->ip6_dst - (caddr_t)ip6); + return IPPROTO_DONE; + } ++ if (ia6) ++ ifa_free(&ia6->ia_ifa); + + tcp_input(m, *offp); + return IPPROTO_DONE; +@@ -941,7 +943,8 @@ + rstreason = BANDLIM_RST_OPENPORT; + goto dropwithreset; + } +- ifa_free(&ia6->ia_ifa); ++ if (ia6) ++ ifa_free(&ia6->ia_ifa); + } + #endif + /*