]> www.infradead.org Git - users/dwmw2/openconnect.git/commitdiff
fix a couple off-by-encap_len bits of NX
authorDaniel Lenski <dlenski@gmail.com>
Thu, 14 May 2020 21:26:58 +0000 (14:26 -0700)
committerDaniel Lenski <dlenski@gmail.com>
Thu, 14 May 2020 21:30:15 +0000 (14:30 -0700)
Signed-off-by: Daniel Lenski <dlenski@gmail.com>
ppp.c

diff --git a/ppp.c b/ppp.c
index d470072b49df1099f7878868b43142f5aa050eb4..8dd77177d6d87672a8324ae4d968773910c56d20 100644 (file)
--- a/ppp.c
+++ b/ppp.c
@@ -786,7 +786,7 @@ int ppp_mainloop(struct openconnect_info *vpninfo, int *timeout, int readable)
 
                case PPP_ENCAP_NX_HDLC:
                        payload_len_hdr = load_be32(ph);
-                       payload_len = unhdlc_in_place(vpninfo, ph + ppp->encap_len, len, &pp);
+                       payload_len = unhdlc_in_place(vpninfo, ph + ppp->encap_len, len - ppp->encap_len, &pp);
                        vpn_progress(vpninfo, PRG_INFO, "payload_len_hdr: %x, payload_len: %x, len: %x\n",
                                                 payload_len_hdr, payload_len, len);
                        if (payload_len < 0)
@@ -997,7 +997,7 @@ int ppp_mainloop(struct openconnect_info *vpninfo, int *timeout, int readable)
                case PPP_ENCAP_NX_HDLC:
                        /* XX: use worst-case escaping for LCP */
                        this = hdlc_into_new_pkt(vpninfo, this->data + n, this->len - n,
-                                                                        proto == PPP_LCP ? ASYNCMAP_LCP : ppp->out_asyncmap);
+                                                proto == PPP_LCP ? ASYNCMAP_LCP : ppp->out_asyncmap);
                        if (!this)
                                return 1; /* XX */
                        store_be32(this->data + n - 4, this->len - n);