diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2015-04-07 08:29:34 +0000 |
---|---|---|
committer | <> | 2015-04-13 18:52:43 +0000 |
commit | b2ccf8dd31d1457ae9f0ae270054117179220370 (patch) | |
tree | 4ccd4a16d5e9ef5869630ba624e822665a6e248c /sntp/networking.c | |
parent | bdab5265fcbf3f472545073a23f8999749a9f2b9 (diff) | |
download | ntp-master.tar.gz |
Imported from /home/lorry/working-area/delta_ntp/ntp-4.2.8p2.tar.gz.HEADntp-4.2.8p2master
Diffstat (limited to 'sntp/networking.c')
-rw-r--r-- | sntp/networking.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/sntp/networking.c b/sntp/networking.c index 75c2f71..bef7352 100644 --- a/sntp/networking.c +++ b/sntp/networking.c @@ -80,7 +80,7 @@ skip_efields( while ((tail - head) > 6) { nlen = ntohl(*head++) & 0xffff; nlen = (nlen + 3) >> 2; - if (nlen > (tail - head) || nlen < 4) + if (nlen > (u_int)(tail - head) || nlen < 4) return NULL; /* Blooper! Inconsistent! */ head += nlen; } @@ -129,8 +129,7 @@ process_pkt ( * extension field is present, so we subtract the length of the * field and go around again. */ - if (pkt_len < LEN_PKT_NOMAC || (pkt_len & 3) != 0) { -unusable: + if (pkt_len < (int)LEN_PKT_NOMAC || (pkt_len & 3) != 0) { msyslog(LOG_ERR, "%s: Incredible packet length: %d. Discarding.", func_name, pkt_len); @@ -139,8 +138,12 @@ unusable: /* Note: pkt_len must be a multiple of 4 at this point! */ packet_end = (u_int32*)((char*)rpkt + pkt_len); exten_end = skip_efields(rpkt->exten, packet_end); - if (NULL == exten_end) - goto unusable; + if (NULL == exten_end) { + msyslog(LOG_ERR, + "%s: Missing extension field. Discarding.", + func_name); + return PACKET_UNUSEABLE; + } /* get size of MAC in cells; can be zero */ exten_len = (u_int)(packet_end - exten_end); @@ -156,7 +159,10 @@ unusable: break; case 3: /* key ID + 3DES MAC -- unsupported! */ - goto unusable; + msyslog(LOG_ERR, + "%s: Key ID + 3DES MAC is unsupported. Discarding.", + func_name); + return PACKET_UNUSEABLE; case 5: /* key ID + MD5 MAC */ case 6: /* key ID + SHA MAC */ @@ -190,7 +196,10 @@ unusable: break; default: - goto unusable; + msyslog(LOG_ERR, + "%s: Unexpected extension length: %d. Discarding.", + func_name, exten_len); + return PACKET_UNUSEABLE; } switch (is_authentic) { |