]> git.ozlabs.org Git - ppp.git/blobdiff - pppdump/pppdump.c
pppdump: Avoid out-of-range access to packet buffer
[ppp.git] / pppdump / pppdump.c
index 2b815fc9b50e41fcd2ec8c0d2a0ad93120a4aaf3..b85a86271edacafcbae3f7329bce4e08bf5b0b94 100644 (file)
@@ -297,6 +297,10 @@ dumpppp(f)
                            printf("%s aborted packet:\n     ", dir);
                            q = "    ";
                        }
+                       if (pkt->cnt >= sizeof(pkt->buf)) {
+                           printf("%s over-long packet truncated:\n     ", dir);
+                           q = "    ";
+                       }
                        nb = pkt->cnt;
                        p = pkt->buf;
                        pkt->cnt = 0;
@@ -400,7 +404,8 @@ dumpppp(f)
                        c ^= 0x20;
                        pkt->esc = 0;
                    }
-                   pkt->buf[pkt->cnt++] = c;
+                   if (pkt->cnt < sizeof(pkt->buf))
+                       pkt->buf[pkt->cnt++] = c;
                    break;
                }
            }