Added patch cbcp-dosfix.patch to fix remote DOS as per bug #69152.
authorDaniel Black <dragonheart@gentoo.org>
Sat, 30 Oct 2004 12:38:53 +0000 (12:38 +0000)
committerDaniel Black <dragonheart@gentoo.org>
Sat, 30 Oct 2004 12:38:53 +0000 (12:38 +0000)
net-dialup/ppp/ChangeLog
net-dialup/ppp/Manifest
net-dialup/ppp/files/2.4.2/cbcp-dosfix.patch [new file with mode: 0644]
net-dialup/ppp/files/digest-ppp-2.4.2-r7 [new file with mode: 0644]
net-dialup/ppp/ppp-2.4.2-r7.ebuild [new file with mode: 0644]

index 3696989bce03a8e5566f6564d86c8acd7aa65297..0c688b7001e78f38f0bcea775d9f916afe764059 100644 (file)
@@ -1,6 +1,13 @@
 # ChangeLog for net-dialup/ppp
 # Copyright 2002-2004 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/net-dialup/ppp/ChangeLog,v 1.79 2004/10/14 08:08:21 dragonheart Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-dialup/ppp/ChangeLog,v 1.80 2004/10/30 12:38:53 dragonheart Exp $
+
+*ppp-2.4.2-r7 (30 Oct 2004)
+
+  30 Oct 2004; Daniel Black <dragonheart@gentoo.org>
+  +files/2.4.2/cbcp-dosfix.patch, +ppp-2.4.2-r7.ebuild:
+  Added patch cbcp-dosfix.patch to fix remote DOS as per bug #69152. Thanks Dan
+  Margolis <krispykringle@gentoo.org>
 
 *ppp-2.4.2-r6 (14 Oct 2004)
 
index c13f88d78d307b687678d731d3ef79473501753e..771b0c095e976db24b9982578c7a3da8194f7e61 100644 (file)
@@ -1,14 +1,18 @@
-MD5 3f0c928a5721f56d967603b1878f648a ChangeLog 13326
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+MD5 5a971d8d59f8c462d8651882eba46297 ppp-2.4.2-r6.ebuild 5404
 MD5 ec2f84816306825d125d0c01bd86758d metadata.xml 163
 MD5 b109af0767940076444e51dbf3275f16 ppp-2.4.1-r14.ebuild 4698
+MD5 cb626799337b0cd20ed72013fcf6f3ae ppp-2.4.2-r7.ebuild 5602
+MD5 5841d7fe8b28db41319af944970132e7 ChangeLog 13583
 MD5 20502c85d128ae0dd4545dc3ae3eec6b ppp-2.4.2-r1.ebuild 4276
-MD5 210b3f9616a92005171f3f25c33c1638 ppp-2.4.2-r2.ebuild 4462
-MD5 5a971d8d59f8c462d8651882eba46297 ppp-2.4.2-r6.ebuild 5404
 MD5 24f264eef320520caee8597fb071405b ppp-2.4.2.ebuild 3957
+MD5 210b3f9616a92005171f3f25c33c1638 ppp-2.4.2-r2.ebuild 4462
 MD5 140bc2a08334d3546f43259934da603e files/chat-default 347
 MD5 1a60baf88a301c6eed8472a01b3691eb files/confd.ppp0 3312
-MD5 8d2dfaf7418945cb19864167542b14c0 files/digest-ppp-2.4.2 61
 MD5 4fda43c2f3f8b5b58a58e5d238991c0b files/digest-ppp-2.4.1-r14 65
+MD5 c07c26f0d600a1fde9752fa06fc4b0c3 files/digest-ppp-2.4.2-r7 194
 MD5 8368eb79ad4618c3c6753801b5c4c689 files/gcc3.3-multiline.patch 1673
 MD5 47bae70427ec4cb3ea1cc87ae799d0e3 files/gcc33-amd64.patch 1207
 MD5 0713ffc9ae6e3ee4ef0f5c3cb752b3ea files/ip-down 285
@@ -20,26 +24,35 @@ MD5 05b7394b35a2342033b52134568bf6b8 files/poff 2723
 MD5 4e62cdeb360ca0a22becbd2deb6f2dac files/pon 957
 MD5 44cc662ba9aa61dd9add3ddd4c5ded57 files/pon.1 3607
 MD5 eb5dfeb9b6a2c8b4b2f23df4980952e0 files/ppp-2.4.1-MSCHAPv2-fix.patch 507
-MD5 f82a3ae0dba4ce6031bbf1405071e827 files/ppp-2.4.1-r10.patch 311
 MD5 c07c26f0d600a1fde9752fa06fc4b0c3 files/digest-ppp-2.4.2-r6 194
+MD5 f82a3ae0dba4ce6031bbf1405071e827 files/ppp-2.4.1-r10.patch 311
 MD5 f0ad3e0c62aec1771536caf00e28b9c6 files/pppoe.html 7605
+MD5 8d2dfaf7418945cb19864167542b14c0 files/digest-ppp-2.4.2 61
 MD5 8d2dfaf7418945cb19864167542b14c0 files/digest-ppp-2.4.2-r1 61
 MD5 8d2dfaf7418945cb19864167542b14c0 files/digest-ppp-2.4.2-r2 61
+MD5 f7a8c95af55d9cca703c15cdf9386ad4 files/2.4.2/control_c.patch 402
 MD5 1fd88dda7f4996799c69a9501d42cc23 files/2.4.2/README.mpls 530
 MD5 bc88eaf56862e5ebf8f45ec5ada4bb90 files/2.4.2/cflags.patch 1857
 MD5 a2eaeceee980ff6e183abfa370fc685c files/2.4.2/chat-default 353
 MD5 ef28c96687409a340c6cd66e21dc58db files/2.4.2/confd.ppp0 2786
 MD5 4d031363e70aa42076bf484fa8bdc9d6 files/2.4.2/ip-down 743
 MD5 0fea1d14ab99bdbbbb5b6e652e105bd3 files/2.4.2/ip-up 1083
-MD5 927fc5dafad76c9c1ee7f0259e9244b7 files/2.4.2/mpls.patch.gz 3151
+MD5 8eaba18dd4e6f49c9fd2d35ab8572458 files/2.4.2/killaddr-smarter.patch.gz 2257
 MD5 5d83af7b897082a0b1ecd70a2cc2a0c7 files/2.4.2/modules.ppp 268
+MD5 927fc5dafad76c9c1ee7f0259e9244b7 files/2.4.2/mpls.patch.gz 3151
 MD5 ae851489b48d5c639c8c6da1fe02a5af files/2.4.2/net.ppp0 4414
 MD5 fa2a5b8df496922fa2fb592115953b6b files/2.4.2/options-pppoe 53
 MD5 2890b47660f967a07ac5b211850e46c5 files/2.4.2/options-pptp 238
-MD5 f0ad3e0c62aec1771536caf00e28b9c6 files/2.4.2/pppoe.html 7605
 MD5 99aa8428a441ff748dc88892a8e98266 files/2.4.2/pcap.patch 728
-MD5 8eaba18dd4e6f49c9fd2d35ab8572458 files/2.4.2/killaddr-smarter.patch.gz 2257
 MD5 971013ca1ccc5a25acffdb3ff9edff4e files/2.4.2/pppoatm.diff.gz 3567
+MD5 f0ad3e0c62aec1771536caf00e28b9c6 files/2.4.2/pppoe.html 7605
 MD5 9d798912edc0a47727afcd7aac100957 files/2.4.2/stdopt-mppe-mppc-0.82.patch.gz 10108
 MD5 bd6bee3df13537a8550d2f39131eab0d files/2.4.2/pppoatm-2.diff.gz 3489
-MD5 f7a8c95af55d9cca703c15cdf9386ad4 files/2.4.2/control_c.patch 402
+MD5 d278ed14e1cd65a9d44a91ec23a108d7 files/2.4.2/cbcp-dosfix.patch 3416
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.2.6 (GNU/Linux)
+
+iD8DBQFBg4tjmdTrptrqvGERApCRAJ9K2hlFbM/m7REVqgioPGbpQLR26wCgiqnn
+TzEi55XOqpr1mmQw9e8BPa8=
+=OhxZ
+-----END PGP SIGNATURE-----
diff --git a/net-dialup/ppp/files/2.4.2/cbcp-dosfix.patch b/net-dialup/ppp/files/2.4.2/cbcp-dosfix.patch
new file mode 100644 (file)
index 0000000..bcac2ba
--- /dev/null
@@ -0,0 +1,151 @@
+--- ppp-2.4.2/pppd/cbcp.c      2004-10-28 15:14:19.231292272 -0400
++++ ppp-cvs/pppd/cbcp.c        2004-10-27 20:15:36.000000000 -0400
+@@ -33,7 +33,7 @@
+  * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+  */
+ 
+-#define RCSID "$Id: cbcp-dosfix.patch,v 1.1 2004/10/30 12:38:53 dragonheart Exp $"
++#define RCSID "$Id: cbcp-dosfix.patch,v 1.1 2004/10/30 12:38:53 dragonheart Exp $"
+ 
+ #include <stdio.h>
+ #include <string.h>
+@@ -165,7 +165,8 @@
+     inp = inpacket;
+ 
+     if (pktlen < CBCP_MINLEN) {
+-        error("CBCP packet is too small");
++      if (debug)
++          dbglog("CBCP packet is too small");
+       return;
+     }
+ 
+@@ -173,12 +174,11 @@
+     GETCHAR(id, inp);
+     GETSHORT(len, inp);
+ 
+-#if 0
+-    if (len > pktlen) {
+-        error("CBCP packet: invalid length");
++    if (len > pktlen || len < CBCP_MINLEN) {
++      if (debug)
++          dbglog("CBCP packet: invalid length %d", len);
+         return;
+     }
+-#endif
+ 
+     len -= CBCP_MINLEN;
+  
+@@ -189,11 +189,12 @@
+       break;
+ 
+     case CBCP_RESP:
+-      dbglog("CBCP_RESP received");
++      if (debug)
++          dbglog("CBCP_RESP received");
+       break;
+ 
+     case CBCP_ACK:
+-      if (id != us->us_id)
++      if (debug && id != us->us_id)
+           dbglog("id doesn't match: expected %d recv %d",
+                  us->us_id, id);
+ 
+@@ -312,11 +313,13 @@
+ 
+     address[0] = 0;
+ 
+-    while (len) {
++    while (len >= 2) {
+         dbglog("length: %d", len);
+ 
+       GETCHAR(type, pckt);
+       GETCHAR(opt_len, pckt);
++      if (opt_len < 2 || opt_len > len)
++          break;
+ 
+       if (opt_len > 2)
+           GETCHAR(delay, pckt);
+@@ -348,6 +351,11 @@
+       }
+       len -= opt_len;
+     }
++    if (len != 0) {
++      if (debug)
++          dbglog("cbcp_recvreq: malformed packet (%d bytes left)", len);
++      return;
++    }
+ 
+     cbcp_resp(us);
+ }
+@@ -360,6 +368,7 @@
+     u_char buf[256];
+     u_char *bufp = buf;
+     int len = 0;
++    int slen;
+ 
+     cb_type = us->us_allowed & us->us_type;
+     dbglog("cbcp_resp cb_type=%d", cb_type);
+@@ -371,12 +380,17 @@
+ 
+     if (cb_type & ( 1 << CB_CONF_USER ) ) {
+       dbglog("cbcp_resp CONF_USER");
++      slen = strlen(us->us_number);
++      if (slen > 250) {
++          warn("callback number truncated to 250 characters");
++          slen = 250;
++      }
+       PUTCHAR(CB_CONF_USER, bufp);
+-      len = 3 + 1 + strlen(us->us_number) + 1;
++      len = 3 + 1 + slen + 1;
+       PUTCHAR(len , bufp);
+       PUTCHAR(5, bufp); /* delay */
+       PUTCHAR(1, bufp);
+-      BCOPY(us->us_number, bufp, strlen(us->us_number) + 1);
++      BCOPY(us->us_number, bufp, slen + 1);
+       cbcp_send(us, CBCP_RESP, buf, len);
+       return;
+     }
+@@ -438,25 +452,29 @@
+     int opt_len;
+     char address[256];
+ 
+-    if (len) {
++    if (len >= 2) {
+         GETCHAR(type, pckt);
+       GETCHAR(opt_len, pckt);
++      if (opt_len >= 2 && opt_len <= len) {
+      
+-      if (opt_len > 2)
+-          GETCHAR(delay, pckt);
++          if (opt_len > 2)
++              GETCHAR(delay, pckt);
+ 
+-      if (opt_len > 4) {
+-          GETCHAR(addr_type, pckt);
+-          memcpy(address, pckt, opt_len - 4);
+-          address[opt_len - 4] = 0;
+-          if (address[0])
+-              dbglog("peer will call: %s", address);
+-      }
+-      if (type == CB_CONF_NO)
+-          return;
+-    }
++          if (opt_len > 4) {
++              GETCHAR(addr_type, pckt);
++              memcpy(address, pckt, opt_len - 4);
++              address[opt_len - 4] = 0;
++              if (address[0])
++                  dbglog("peer will call: %s", address);
++          }
++          if (type == CB_CONF_NO)
++              return;
+ 
+-    cbcp_up(us);
++          cbcp_up(us);
++
++      } else if (debug)
++          dbglog("cbcp_recvack: malformed packet");
++    }
+ }
+ 
+ /* ok peer will do callback */
diff --git a/net-dialup/ppp/files/digest-ppp-2.4.2-r7 b/net-dialup/ppp/files/digest-ppp-2.4.2-r7
new file mode 100644 (file)
index 0000000..47080cb
--- /dev/null
@@ -0,0 +1,3 @@
+MD5 362bcf218fba8afbb9afbee7471e5dac ppp-2.4.2.tar.gz 774441
+MD5 0d2679907627f68dd6a2c32d1c7dda90 ppp-2.4.2-mppe-mppc-1.1.patch.gz 12532
+MD5 9d2f3febf510c5b0cbb4dacba713a217 ppp-dhcpc.tgz 33497
diff --git a/net-dialup/ppp/ppp-2.4.2-r7.ebuild b/net-dialup/ppp/ppp-2.4.2-r7.ebuild
new file mode 100644 (file)
index 0000000..5ad9e3b
--- /dev/null
@@ -0,0 +1,189 @@
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-dialup/ppp/ppp-2.4.2-r7.ebuild,v 1.1 2004/10/30 12:38:53 dragonheart Exp $
+
+inherit eutils gnuconfig flag-o-matic
+
+DESCRIPTION="Point-to-point protocol - patched for PPPOE"
+HOMEPAGE="http://www.samba.org/ppp"
+SRC_URI="ftp://ftp.samba.org/pub/ppp/${P}.tar.gz
+       http://www.polbox.com/h/hs001/ppp-2.4.2-mppe-mppc-1.1.patch.gz
+       http://www.netservers.co.uk/gpl/ppp-dhcpc.tgz"
+
+LICENSE="BSD GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~hppa ~ia64 ~ppc ~sparc ~x86"
+IUSE="ipv6 activefilter pam atm mppe-mppc dhcp"
+
+RDEPEND="virtual/libc
+       activefilter? ( >=net-libs/libpcap-0.8.3-r1 )
+       atm? ( net-dialup/linux-atm )"
+DEPEND="${RDEPEND}
+       >=sys-apps/sed-4"
+
+src_unpack() {
+       unpack ${A}
+       cd ${S}
+
+       epatch ${FILESDIR}/${PV}/cbcp-dosfix.patch || die "patch failed"
+       epatch ${FILESDIR}/${PV}/mpls.patch.gz || die "patch failed"
+       epatch ${FILESDIR}/${PV}/killaddr-smarter.patch.gz || die "patch failed"
+       epatch ${FILESDIR}/${PV}/cflags.patch || die "patch failed"
+       epatch ${FILESDIR}/${PV}/control_c.patch || die "patch failed"
+
+       use mppe-mppc && {
+               einfo "Enabling mppe-mppc support"
+               epatch ${DISTDIR}/ppp-2.4.2-mppe-mppc-1.1.patch.gz || die "patch failed"
+       }
+
+       if use atm; then
+               einfo "Enabling PPPoATM support"
+               epatch ${FILESDIR}/${PV}/pppoatm-2.diff.gz || die "patch failed"
+               sed -i -e "s/^LIBS =/LIBS = -latm/" pppd/Makefile.linux || die
+       fi
+
+       use activefilter || {
+               einfo "Disabling active-filter"
+               sed -i -e "s/^FILTER=y/#FILTER=y/" pppd/Makefile.linux || die
+       }
+
+       use pam && {
+               einfo "Enabling PAM"
+               sed -i -e "s/^#USE_PAM=y/USE_PAM=y/" pppd/Makefile.linux || die
+       }
+
+       use ipv6 && {
+               einfo "Enabling IPv6"
+               sed -i -e "s/#HAVE_INET6/HAVE_INET6/" pppd/Makefile.linux || die
+       }
+
+       einfo "Enabling CBCP"
+       sed -i 's/^#CBCP=y/CBCP=y/' pppd/Makefile.linux || die
+
+       einfo "Enabling radius"
+       sed -i -e 's/SUBDIRS := rp-pppoe/SUBDIRS := rp-pppoe radius/' pppd/plugins/Makefile.linux || die
+       sed -i -e '/^CFLAGS/s:$: -fPIC:' pppd/plugins/radius/radiusclient/lib/Makefile.in || die
+
+       use dhcp && {
+               # copy the ppp-dhcp plugin files
+               einfo "Copying ppp-dhcp plugin files..."
+               tar -xzf ${DISTDIR}/ppp-dhcpc.tgz -C ${S}/pppd/plugins/
+               sed -i -e 's/SUBDIRS := rp-pppoe/SUBDIRS := rp-pppoe dhcp/' pppd/plugins/Makefile.linux || die
+               sed -i -e "s/-O2/${CFLAGS}/" pppd/plugins/dhcp/Makefile.linux
+       }
+
+       #epatch ${FILESDIR}/${PV}/pcap.patch
+       sed -i -e "s:net/bpf.h:pcap-bpf.h:" pppd/sys-linux.c pppd/demand.c pppd/plugins/rp-pppoe/if.c
+}
+
+src_compile() {
+       export WANT_AUTOCONF=2.1
+       gnuconfig_update
+       # compile radius better than their makefile does
+       append-ldflags -Wl,-z,now
+       (cd pppd/plugins/radius/radiusclient && econf && emake) || die
+       ./configure --prefix=/usr || die
+       emake COPTS="${CFLAGS}" || die
+}
+
+src_install() {
+       local y
+       for y in chat pppd pppdump pppstats
+       do
+               doman ${y}/${y}.8
+               dosbin ${y}/${y}
+       done
+       chmod u+s-w ${D}/usr/sbin/pppd
+
+       dodir /etc/ppp/peers
+       insinto /etc/ppp
+       insopts -m0600
+       newins etc.ppp/pap-secrets pap-secrets.example
+       newins etc.ppp/chap-secrets chap-secrets.example
+
+       insopts -m0644
+       doins etc.ppp/options
+       doins ${FILESDIR}/${PV}/options-pptp
+       doins ${FILESDIR}/${PV}/options-pppoe
+       doins ${FILESDIR}/${PV}/chat-default
+
+       insopts -m0755
+       doins ${FILESDIR}/${PV}/ip-up
+       doins ${FILESDIR}/${PV}/ip-down
+
+       exeinto /etc/init.d/
+       doexe ${FILESDIR}/${PV}/net.ppp0
+
+       insinto /etc/conf.d
+       insopts -m0600
+       newins ${FILESDIR}/${PV}/confd.ppp0 net.ppp0
+
+       dolib.so pppd/plugins/minconn.so
+       dolib.so pppd/plugins/passprompt.so
+       dolib.so pppd/plugins/rp-pppoe/rp-pppoe.so
+       dolib.so pppd/plugins/radius/radius.so
+       dolib.so pppd/plugins/radius/radattr.so
+       dolib.so pppd/plugins/radius/radrealms.so
+       if use atm; then
+               dolib.so pppd/plugins/pppoatm.so
+       fi
+       if use dhcp; then
+               dolib.so pppd/plugins/dhcp/dhcpc.so
+       fi
+
+       dodir /usr/lib/pppd/$(awk -F '"' '/VERSION/ {print $2}' pppd/patchlevel.h)
+       mv ${D}/usr/lib/*.so ${D}/usr/lib/pppd/$(awk -F '"' '/VERSION/ {print $2}' pppd/patchlevel.h)
+
+       insinto /etc/modules.d
+       insopts -m0644
+       newins ${FILESDIR}/${PV}/modules.ppp ppp
+       if use mppe-mppc; then
+               echo 'alias ppp-compress-18 ppp_mppe_mppc' >> ${D}/etc/modules.d/ppp
+       fi
+
+       dodoc PLUGINS README* SETUP Changes-2.3 FAQ
+       dodoc ${FILESDIR}/${PV}/README.mpls
+       dohtml ${FILESDIR}/${PV}/pppoe.html
+
+       doman pppd/plugins/radius/pppd-radius.8
+       doman pppd/plugins/radius/pppd-radattr.8
+
+       dosbin scripts/pon
+       dosbin scripts/poff
+       dosbin scripts/plog
+       doman scripts/pon.1
+
+       # Adding misc. specialized scripts to doc dir
+       dodir /usr/share/doc/${PF}/scripts/chatchat
+       insinto /usr/share/doc/${PF}/scripts/chatchat
+       doins scripts/chatchat/*
+       insinto /usr/share/doc/${PF}/scripts
+       doins scripts/*
+
+       # install radiusclient
+       cd pppd/plugins/radius/radiusclient
+       make DESTDIR=${D} install || die
+}
+
+pkg_postinst() {
+       if ! [ -e ${ROOT}dev/.devfsd ] || [ -e ${ROOT}dev/.udev ]
+       then
+               if [ ! -e ${ROOT}dev/ppp ]; then
+                       mknod ${ROOT}dev/ppp c 108 0
+               fi
+       fi
+       if [ "$ROOT" = "/" ]
+       then
+               /sbin/update-modules
+       fi
+       ewarn "To enable kernel-pppoe read html/pppoe.html in the doc-directory."
+       ewarn "Note: the library name has changed from pppoe.so to rp-pppoe.so."
+       ewarn "Pon, poff and plog scripts have been supplied for experienced users."
+       ewarn "New users or those requiring something more should have a look at"
+       ewarn "the /etc/init.d/net.ppp0 script."
+       ewarn "Users needing particular scripts (ssh,rsh,etc.)should check out the"
+       ewarn "/usr/share/doc/ppp*/scripts directory."
+
+       # lib name has changed
+       sed -i -e "s:^pppoe.so:rp-pppoe.so:" ${ROOT}etc/ppp/options
+}