+---
+* [Sec 3388] NTP-01-014: Buffer Overflow in DPTS Clock
+ (Pentest report 01.2017) <perlinger@ntp.org>
+
---
(4.2.8p9-win) 2017/02/01 Released by Harlan Stenn <stenn@ntp.org>
struct recvbuf *rbufp
)
{
- int i;
+ int i, nb;
l_fp tstmp;
struct peer *p;
struct datum_pts_unit *datum_pts;
** received to reduce the jitter.
*/
- if (datum_pts->nbytes == 0) {
+ nb = datum_pts->nbytes;
+ if (nb == 0) {
datum_pts->lastrec = rbufp->recv_time;
}
/*
** Increment our count to the number of bytes received so far. Return if we
** haven't gotten all seven bytes yet.
+ ** [Sec 3388] make sure we do not overrun the buffer.
+ ** TODO: what to do with excessive bytes, if we ever get them?
*/
-
- for (i=0; i<dpend; i++) {
- datum_pts->retbuf[datum_pts->nbytes+i] = dpt[i];
+ for (i=0; (i < dpend) && (nb < sizeof(datum_pts->retbuf)); i++, nb++) {
+ datum_pts->retbuf[nb] = dpt[i];
}
-
- datum_pts->nbytes += dpend;
-
- if (datum_pts->nbytes != 7) {
+ datum_pts->nbytes = nb;
+
+ if (nb < 7) {
return;
}