]> git.ozlabs.org Git - ppp.git/blob - linux/mppe/linux-2.6.2-pad.patch
Run ntlm_auth as the user that invoked pppd.
[ppp.git] / linux / mppe / linux-2.6.2-pad.patch
1 --- linux/drivers/net/ppp_generic.c     2003-09-27 20:51:03.000000000 -0400
2 +++ linux/drivers/net/ppp_generic.c     2003-10-08 19:08:21.000000000 -0400
3 @@ -1045,8 +1045,15 @@
4         /* try to do packet compression */
5         if ((ppp->xstate & SC_COMP_RUN) && ppp->xc_state != 0
6             && proto != PPP_LCP && proto != PPP_CCP) {
7 -               new_skb = alloc_skb(ppp->dev->mtu + ppp->dev->hard_header_len,
8 -                                   GFP_ATOMIC);
9 +                int new_skb_size = ppp->dev->mtu + ppp->dev->hard_header_len;
10 +                int compressor_skb_size = ppp->dev->mtu + PPP_HDRLEN;
11 +
12 +                if (ppp->xcomp->compress_proto == CI_MPPE) {
13 +                        /* CCP [must have] reduced MTU by MPPE_PAD. */
14 +                        new_skb_size += MPPE_PAD;
15 +                        compressor_skb_size += MPPE_PAD;
16 +                }
17 +                new_skb = alloc_skb(new_skb_size, GFP_ATOMIC);
18                 if (new_skb == 0) {
19                         printk(KERN_ERR "PPP: no memory (comp pkt)\n");
20                         goto drop;
21 @@ -1058,15 +1065,27 @@
22                 /* compressor still expects A/C bytes in hdr */
23                 len = ppp->xcomp->compress(ppp->xc_state, skb->data - 2,
24                                            new_skb->data, skb->len + 2,
25 -                                          ppp->dev->mtu + PPP_HDRLEN);
26 +                                           compressor_skb_size);
27                 if (len > 0 && (ppp->flags & SC_CCP_UP)) {
28                         kfree_skb(skb);
29                         skb = new_skb;
30                         skb_put(skb, len);
31                         skb_pull(skb, 2);       /* pull off A/C bytes */
32 -               } else {
33 +                } else if (len == 0) {
34                         /* didn't compress, or CCP not up yet */
35                         kfree_skb(new_skb);
36 +                } else {
37 +                        /*
38 +                         * (len < 0)
39 +                         * MPPE requires that we do not send unencrypted
40 +                         * frames.  The compressor will return -1 if we
41 +                         * should drop the frame.  We cannot simply test
42 +                         * the compress_proto because MPPE and MPPC share
43 +                         * the same number.
44 +                         */
45 +                        printk(KERN_ERR "ppp: compressor dropped pkt\n");
46 +                        kfree_skb(new_skb);
47 +                        goto drop;
48                 }
49         }
50  
51 @@ -1571,7 +1590,7 @@
52                 goto err;
53  
54         if (proto == PPP_COMP) {
55 -               ns = dev_alloc_skb(ppp->mru + PPP_HDRLEN);
56 +               ns = dev_alloc_skb(ppp->mru + 128 + PPP_HDRLEN);
57                 if (ns == 0) {
58                         printk(KERN_ERR "ppp_decompress_frame: no memory\n");
59                         goto err;