mirror of
https://gitlab.com/chrony/chrony.git
synced 2025-12-03 18:35:06 -05:00
nts: fix handling of long server negotiation record
Recent change in handling of the NTPv4 server negotiation record (commit754097944b) increased the length of the instance name buffer to make room for the trailing dot. This allowed a record with body truncated in the processing buffer to be accepted and caused an over-read of 1 byte in the memcpy() call saving the name to the instance buffer. Modify the client to accept only records that fit in the processing buffer. Fixes:754097944b("nts: handle negotiated server as FQDN")
This commit is contained in:
@@ -141,6 +141,12 @@ process_response(NKC_Instance inst)
|
||||
if (!NKSN_GetRecord(inst->session, &critical, &type, &length, &data, sizeof (data)))
|
||||
break;
|
||||
|
||||
if (length > sizeof (data)) {
|
||||
DEBUG_LOG("Record too long type=%d length=%d", type, length);
|
||||
error = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
switch (type) {
|
||||
case NKE_RECORD_NEXT_PROTOCOL:
|
||||
if (!critical || length != 2 || ntohs(data[0]) != NKE_NEXT_PROTOCOL_NTPV4) {
|
||||
|
||||
Reference in New Issue
Block a user