From: Juergen Perlinger Date: Fri, 13 Nov 2015 21:54:35 +0000 (+0100) Subject: [Bug 2962] truncation of size_t/ptrdiff_t on 64bit targets X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4cc6c63fb6c7a896e75b3a50cab6f2c2da08c80c;p=thirdparty%2Fntp.git [Bug 2962] truncation of size_t/ptrdiff_t on 64bit targets - fixed several other warnings (cast-alignment, missing const, missing prorotypes) - promote use of 'size_t' for values that express a size - use ptr-to-const for read-only arguments - make sure SOCKET values are not truncated (win32-specific) - format string fixes bk: 56465c1b-lmDibJs_Pk40_ECcAd_YQ --- diff --git a/ChangeLog b/ChangeLog index cafc6ac0a..7780aafd0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,12 @@ * [Bug 2954] Version 4.2.8p4 crashes on startup with sig fault - fixed data race conditions in threaded DNS worker. perlinger@ntp.org - limit threading warm-up to linux; FreeBSD bombs on it. perlinger@ntp.org +* [Bug 2962] truncation of size_t/ptrdiff_t on 64bit targets. perlinger@ntp.org + - fixed several other warnings (cast-alignment, missing const, missing prorotypes) + - promote use of 'size_t' for values that express a size + - use ptr-to-const for read-only arguments + - make sure SOCKET values are not truncated (win32-specific) + - format string fixes * Unity cleanup for FreeBSD-6.4. Harlan Stenn. * Unity test cleanup. Harlan Stenn. --- diff --git a/include/Makefile.am b/include/Makefile.am index f032c97e7..d8b4dd2b5 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -66,6 +66,7 @@ noinst_HEADERS = \ recvbuff.h \ refclock_atom.h \ refidsmear.h \ + safecast.h \ ssl_applink.c \ timepps-SCO.h \ timepps-Solaris.h \ diff --git a/include/ntp_refclock.h b/include/ntp_refclock.h index f92d14cdb..b264dfaa0 100644 --- a/include/ntp_refclock.h +++ b/include/ntp_refclock.h @@ -220,7 +220,7 @@ extern void refclock_buginfo(sockaddr_u *, extern void refclock_control(sockaddr_u *, const struct refclockstat *, struct refclockstat *); -extern int refclock_open (char *, u_int, u_int); +extern int refclock_open (const char *, u_int, u_int); extern int refclock_setup (int, u_int, u_int); extern void refclock_timer (struct peer *); extern void refclock_transmit(struct peer *); diff --git a/include/ntp_stdlib.h b/include/ntp_stdlib.h index a2e62dabe..d735b41f4 100644 --- a/include/ntp_stdlib.h +++ b/include/ntp_stdlib.h @@ -65,8 +65,8 @@ typedef void (*ctrl_c_fn)(void); /* authkeys.c */ extern void auth_delkeys (void); extern int auth_havekey (keyid_t); -extern int authdecrypt (keyid_t, u_int32 *, int, int); -extern int authencrypt (keyid_t, u_int32 *, int); +extern int authdecrypt (keyid_t, u_int32 *, size_t, size_t); +extern size_t authencrypt (keyid_t, u_int32 *, size_t); extern int authhavekey (keyid_t); extern int authistrusted (keyid_t); extern int authreadkeys (const char *); @@ -95,8 +95,8 @@ extern void auth_prealloc_symkeys(int); extern int ymd2yd (int, int, int); /* a_md5encrypt.c */ -extern int MD5authdecrypt (int, u_char *, u_int32 *, int, int); -extern int MD5authencrypt (int, u_char *, u_int32 *, int); +extern int MD5authdecrypt (int, const u_char *, u_int32 *, size_t, size_t); +extern size_t MD5authencrypt (int, const u_char *, u_int32 *, size_t); extern void MD5auth_setkey (keyid_t, int, const u_char *, size_t); extern u_int32 addr2refid (sockaddr_u *); diff --git a/include/ntpd.h b/include/ntpd.h index 56ec7cae7..362068c76 100644 --- a/include/ntpd.h +++ b/include/ntpd.h @@ -156,7 +156,7 @@ extern u_int sys_tai; extern int freq_cnt; /* ntp_monitor.c */ -#define MON_HASH_SIZE (1U << mon_hash_bits) +#define MON_HASH_SIZE ((size_t)1U << mon_hash_bits) #define MON_HASH_MASK (MON_HASH_SIZE - 1) #define MON_HASH(addr) (sock_hash(addr) & MON_HASH_MASK) extern void init_mon (void); diff --git a/include/safecast.h b/include/safecast.h new file mode 100644 index 000000000..93004633a --- /dev/null +++ b/include/safecast.h @@ -0,0 +1,34 @@ +#ifndef SAFECAST_H +#define SAFECAST_H + +#include +static inline int size2int_chk(size_t v) +{ + if (v > INT_MAX) + abort(); + return (int)(v); +} + +static inline int size2int_sat(size_t v) +{ + return (v > INT_MAX) ? INT_MAX : (int)v; +} + +/* Compilers can emit warning about increased alignment requirements + * when casting pointers. The impact is tricky: on machines where + * alignment is just a performance issue (x86,x64,...) this might just + * cause a performance penalty. On others, an address error can occur + * and the process dies... + * + * Still, there are many cases where the pointer arithmetic and the + * buffer alignment make sure this does not happen. OTOH, the compiler + * doesn't know this and still emits warnings. + * + * The following cast macros are going through void pointers to tell + * the compiler that there is no alignment requirement to watch. + */ +#define UA_PTR(ptype,pval) ((ptype *)(void*)(pval)) +#define UAC_PTR(ptype,pval) ((const ptype *)(const void*)(pval)) +#define UAV_PTR(ptype,pval) ((volatile ptype *)(volatile void*)(pval)) + +#endif diff --git a/lib/isc/backtrace.c b/lib/isc/backtrace.c index 4274da31b..e0425e14f 100644 --- a/lib/isc/backtrace.c +++ b/lib/isc/backtrace.c @@ -278,7 +278,7 @@ isc_backtrace_getsymbol(const void *addr, const char **symbolp, result = ISC_R_NOTFOUND; else { *symbolp = found->symbol; - *offsetp = (const char *)addr - (char *)found->addr; + *offsetp = (u_long)((const char *)addr - (char *)found->addr); } return (result); diff --git a/lib/isc/buffer.c b/lib/isc/buffer.c index 1b59e650a..6a50985c7 100644 --- a/lib/isc/buffer.c +++ b/lib/isc/buffer.c @@ -406,7 +406,7 @@ isc__buffer_putmem(isc_buffer_t *b, const unsigned char *base, void isc__buffer_putstr(isc_buffer_t *b, const char *source) { - unsigned int l; + size_t l; unsigned char *cp; REQUIRE(ISC_BUFFER_VALID(b)); @@ -421,7 +421,7 @@ isc__buffer_putstr(isc_buffer_t *b, const char *source) { cp = isc_buffer_used(b); memcpy(cp, source, l); - b->used += l; + b->used += (u_int)l; /* checked above - no overflow here */ } isc_result_t diff --git a/lib/isc/inet_aton.c b/lib/isc/inet_aton.c index 14b4887f4..3fc3a4db8 100644 --- a/lib/isc/inet_aton.c +++ b/lib/isc/inet_aton.c @@ -92,7 +92,7 @@ static char rcsid[] = "$Id: inet_aton.c,v 1.23 2008/12/01 23:47:45 tbox Exp $"; int isc_net_aton(const char *cp, struct in_addr *addr) { unsigned long val; - int base, n; + int base; unsigned char c; isc_uint8_t parts[4]; isc_uint8_t *pp = parts; @@ -166,8 +166,7 @@ isc_net_aton(const char *cp, struct in_addr *addr) { * Concoct the address according to * the number of parts specified. */ - n = pp - parts + 1; - switch (n) { + switch (pp - parts + 1) { case 1: /* a -- 32 bits */ break; diff --git a/lib/isc/inet_pton.c b/lib/isc/inet_pton.c index 66b5de0bf..eac631b58 100644 --- a/lib/isc/inet_pton.c +++ b/lib/isc/inet_pton.c @@ -92,7 +92,7 @@ inet_pton4(const char *src, unsigned char *dst) { const char *pch; if ((pch = strchr(digits, ch)) != NULL) { - unsigned int newv = *tp * 10 + (pch - digits); + size_t newv = *tp * 10 + (pch - digits); if (saw_digit && *tp == 0) return (0); @@ -197,12 +197,12 @@ inet_pton6(const char *src, unsigned char *dst) { * Since some memmove()'s erroneously fail to handle * overlapping regions, we'll do the shift by hand. */ - const int n = tp - colonp; + const size_t n = tp - colonp; int i; if (tp == endp) return (0); - for (i = 1; i <= n; i++) { + for (i = 1; (size_t)i <= n; i++) { endp[- i] = colonp[n - i]; colonp[n - i] = 0; } diff --git a/lib/isc/log.c b/lib/isc/log.c index 38f0c4ff5..dfe4fdfd4 100644 --- a/lib/isc/log.c +++ b/lib/isc/log.c @@ -1146,7 +1146,7 @@ greatest_version(isc_logchannel_t *channel, int *greatestp) { char *basenam, *digit_end; const char *dirname; int version, greatest = -1; - unsigned int basenamelen; + size_t basenamelen; isc_dir_t dir; isc_result_t result; char sep = '/'; diff --git a/lib/isc/netaddr.c b/lib/isc/netaddr.c index 457576b77..971046628 100644 --- a/lib/isc/netaddr.c +++ b/lib/isc/netaddr.c @@ -159,7 +159,7 @@ isc_netaddr_totext(const isc_netaddr_t *netaddr, isc_buffer_t *target) { if (r == NULL) return (ISC_R_FAILURE); - alen = strlen(abuf); + alen = (unsigned int)strlen(abuf); /* no overflow possible */ INSIST(alen < sizeof(abuf)); zlen = 0; diff --git a/lib/isc/sockaddr.c b/lib/isc/sockaddr.c index 1ae5e7c91..eb0451b9d 100644 --- a/lib/isc/sockaddr.c +++ b/lib/isc/sockaddr.c @@ -153,7 +153,7 @@ isc_sockaddr_totext(const isc_sockaddr_t *sockaddr, isc_buffer_t *target) { return (ISC_R_FAILURE); } - plen = strlen(pbuf); + plen = (unsigned int)strlen(pbuf); INSIST(plen < sizeof(pbuf)); isc_netaddr_fromsockaddr(&netaddr, sockaddr); diff --git a/lib/isc/task.c b/lib/isc/task.c index cd19d2d52..5b899b350 100644 --- a/lib/isc/task.c +++ b/lib/isc/task.c @@ -329,7 +329,7 @@ ISC_TASKFUNC_SCOPE isc_result_t isc__task_create(isc_taskmgr_t *manager0, unsigned int quantum, isc_task_t **taskp) { - isc__taskmgr_t *manager = (isc__taskmgr_t *)manager0; + isc__taskmgr_t *manager = (void*)manager0; isc__task_t *task; isc_boolean_t exiting; isc_result_t result; @@ -1463,7 +1463,7 @@ isc__taskmgr_destroy(isc_taskmgr_t **managerp) { */ REQUIRE(managerp != NULL); - manager = (isc__taskmgr_t *)*managerp; + manager = (void*)(*managerp); REQUIRE(VALID_MANAGER(manager)); #ifndef USE_WORKER_THREADS @@ -1559,7 +1559,7 @@ isc__taskmgr_destroy(isc_taskmgr_t **managerp) { ISC_TASKFUNC_SCOPE void isc__taskmgr_setmode(isc_taskmgr_t *manager0, isc_taskmgrmode_t mode) { - isc__taskmgr_t *manager = (isc__taskmgr_t *)manager0; + isc__taskmgr_t *manager = (void*)manager0; LOCK(&manager->lock); manager->mode = mode; @@ -1568,7 +1568,7 @@ isc__taskmgr_setmode(isc_taskmgr_t *manager0, isc_taskmgrmode_t mode) { ISC_TASKFUNC_SCOPE isc_taskmgrmode_t isc__taskmgr_mode(isc_taskmgr_t *manager0) { - isc__taskmgr_t *manager = (isc__taskmgr_t *)manager0; + isc__taskmgr_t *manager = (void*)manager0; isc_taskmgrmode_t mode; LOCK(&manager->lock); mode = manager->mode; @@ -1579,7 +1579,7 @@ isc__taskmgr_mode(isc_taskmgr_t *manager0) { #ifndef USE_WORKER_THREADS isc_boolean_t isc__taskmgr_ready(isc_taskmgr_t *manager0) { - isc__taskmgr_t *manager = (isc__taskmgr_t *)manager0; + isc__taskmgr_t *manager = (void*)manager0; isc_boolean_t is_ready; #ifdef USE_SHARED_MANAGER @@ -1598,7 +1598,7 @@ isc__taskmgr_ready(isc_taskmgr_t *manager0) { isc_result_t isc__taskmgr_dispatch(isc_taskmgr_t *manager0) { - isc__taskmgr_t *manager = (isc__taskmgr_t *)manager0; + isc__taskmgr_t *manager = (void*)manager0; #ifdef USE_SHARED_MANAGER if (manager == NULL) @@ -1615,7 +1615,7 @@ isc__taskmgr_dispatch(isc_taskmgr_t *manager0) { #else ISC_TASKFUNC_SCOPE void isc__taskmgr_pause(isc_taskmgr_t *manager0) { - isc__taskmgr_t *manager = (isc__taskmgr_t *)manager0; + isc__taskmgr_t *manager = (void*)manager0; LOCK(&manager->lock); while (manager->tasks_running > 0) { WAIT(&manager->paused, &manager->lock); @@ -1626,7 +1626,7 @@ isc__taskmgr_pause(isc_taskmgr_t *manager0) { ISC_TASKFUNC_SCOPE void isc__taskmgr_resume(isc_taskmgr_t *manager0) { - isc__taskmgr_t *manager = (isc__taskmgr_t *)manager0; + isc__taskmgr_t *manager = (void*)manager0; LOCK(&manager->lock); if (manager->pause_requested) { diff --git a/lib/isc/win32/interfaceiter.c b/lib/isc/win32/interfaceiter.c index 8753aa8a9..af52788f2 100644 --- a/lib/isc/win32/interfaceiter.c +++ b/lib/isc/win32/interfaceiter.c @@ -54,7 +54,7 @@ struct isc_interfaceiter { IP_ADAPTER_ADDRESSES * ipaaCur; /* enumeration position */ IP_ADAPTER_UNICAST_ADDRESS *ipuaCur; /* enumeration subposition */ /* fields used for the older address enumeration ioctls */ - int socket; + SOCKET socket; INTERFACE_INFO IFData; /* Current Interface Info */ int numIF; /* Current Interface count */ int v4IF; /* Number of IPv4 Interfaces */ diff --git a/lib/isc/win32/net.c b/lib/isc/win32/net.c index 12876da2b..53e143556 100644 --- a/lib/isc/win32/net.c +++ b/lib/isc/win32/net.c @@ -216,7 +216,8 @@ initialize_ipv6only(void) { static void try_ipv6pktinfo(void) { - int s, on; + SOCKET s; + int on; char strbuf[ISC_STRERRORSIZE]; isc_result_t result; int optname; diff --git a/libntp/a_md5encrypt.c b/libntp/a_md5encrypt.c index ffabc47c7..beaf6fd35 100644 --- a/libntp/a_md5encrypt.c +++ b/libntp/a_md5encrypt.c @@ -16,12 +16,12 @@ * * Returns length of MAC including key ID and digest. */ -int +size_t MD5authencrypt( - int type, /* hash algorithm */ - u_char *key, /* key pointer */ - u_int32 *pkt, /* packet pointer */ - int length /* packet length */ + int type, /* hash algorithm */ + const u_char * key, /* key pointer */ + u_int32 * pkt, /* packet pointer */ + size_t length /* packet length */ ) { u_char digest[EVP_MAX_MD_SIZE]; @@ -44,7 +44,7 @@ MD5authencrypt( EVP_DigestInit(&ctx, EVP_get_digestbynid(type)); #endif EVP_DigestUpdate(&ctx, key, cache_secretsize); - EVP_DigestUpdate(&ctx, (u_char *)pkt, (u_int)length); + EVP_DigestUpdate(&ctx, (u_char *)pkt, length); EVP_DigestFinal(&ctx, digest, &len); memmove((u_char *)pkt + length + 4, digest, len); return (len + 4); @@ -58,11 +58,11 @@ MD5authencrypt( */ int MD5authdecrypt( - int type, /* hash algorithm */ - u_char *key, /* key pointer */ - u_int32 *pkt, /* packet pointer */ - int length, /* packet length */ - int size /* MAC size */ + int type, /* hash algorithm */ + const u_char * key, /* key pointer */ + u_int32 * pkt, /* packet pointer */ + size_t length, /* packet length */ + size_t size /* MAC size */ ) { u_char digest[EVP_MAX_MD_SIZE]; @@ -85,14 +85,14 @@ MD5authdecrypt( EVP_DigestInit(&ctx, EVP_get_digestbynid(type)); #endif EVP_DigestUpdate(&ctx, key, cache_secretsize); - EVP_DigestUpdate(&ctx, (u_char *)pkt, (u_int)length); + EVP_DigestUpdate(&ctx, (u_char *)pkt, length); EVP_DigestFinal(&ctx, digest, &len); - if ((u_int)size != len + 4) { + if (size != (size_t)len + 4) { msyslog(LOG_ERR, "MAC decrypt: MAC length error"); return (0); } - return !memcmp(digest, (char *)pkt + length + 4, len); + return !memcmp(digest, (const char *)pkt + length + 4, len); } /* diff --git a/libntp/atolfp.c b/libntp/atolfp.c index 9a2f69178..439194eda 100644 --- a/libntp/atolfp.c +++ b/libntp/atolfp.c @@ -68,7 +68,7 @@ atolfp( while (*cp != '\0' && (ind = strchr(digits, *cp)) != NULL) { dec_i = (dec_i << 3) + (dec_i << 1); /* multiply by 10 */ - dec_i += (ind - digits); + dec_i += (u_long)(ind - digits); cp++; } @@ -80,7 +80,7 @@ atolfp( && (ind = strchr(digits, *cp)) != NULL) { ndec++; dec_f = (dec_f << 3) + (dec_f << 1); /* *10 */ - dec_f += (ind - digits); + dec_f += (u_long)(ind - digits); cp++; } diff --git a/libntp/authkeys.c b/libntp/authkeys.c index 667ca298b..c84df4490 100644 --- a/libntp/authkeys.c +++ b/libntp/authkeys.c @@ -641,11 +641,11 @@ auth_agekeys(void) * * Returns length of authenticator field, zero if key not found. */ -int +size_t authencrypt( keyid_t keyno, u_int32 * pkt, - int length + size_t length ) {\ /* @@ -675,8 +675,8 @@ int authdecrypt( keyid_t keyno, u_int32 * pkt, - int length, - int size + size_t length, + size_t size ) { /* diff --git a/libntp/authusekey.c b/libntp/authusekey.c index c1d08132c..0ccf522b2 100644 --- a/libntp/authusekey.c +++ b/libntp/authusekey.c @@ -23,7 +23,7 @@ authusekey( const u_char *str ) { - int len; + size_t len; len = strlen((const char *)str); if (0 == len) diff --git a/libntp/dolfptoa.c b/libntp/dolfptoa.c index 07ead950f..68f56e163 100644 --- a/libntp/dolfptoa.c +++ b/libntp/dolfptoa.c @@ -40,7 +40,7 @@ dolfptoa( * including a possible rounding from the fractional part. */ cp = cpend = cpdec = &cbuf[10]; - for (dec = cp - cbuf; dec > 0 && fpi != 0; dec--) { + for (dec = (int)(cp - cbuf); dec > 0 && fpi != 0; dec--) { /* can add another digit */ u_int32 digit; @@ -62,7 +62,7 @@ dolfptoa( cpdec += 3; } if ((size_t)dec > sizeof(cbuf) - (cpend - cbuf)) - dec = sizeof(cbuf) - (cpend - cbuf); + dec = (int)(sizeof(cbuf) - (cpend - cbuf)); /* * If there's a fraction to deal with, do so. @@ -95,7 +95,7 @@ dolfptoa( u_char *tp = cpend; int carry = ((fpv & 0x80000000) != 0); - for (dec = tp - cbuf; carry && dec > 0; dec--) { + for (dec = (int)(tp - cbuf); carry && dec > 0; dec--) { *--tp += 1; if (*tp == 10) *tp = 0; diff --git a/libntp/hextolfp.c b/libntp/hextolfp.c index 2bff929dc..19a93cdd4 100644 --- a/libntp/hextolfp.c +++ b/libntp/hextolfp.c @@ -37,8 +37,9 @@ hextolfp( while (*cp != '\0' && (cp - cpstart) < 8 && (ind = strchr(digits, *cp)) != NULL) { dec_i = dec_i << 4; /* multiply by 16 */ - dec_i += ((ind - digits) > 15) ? (ind - digits) - 6 - : (ind - digits); + dec_i += ((ind - digits) > 15) + ? (u_long)(ind - digits - 6) + : (u_long)(ind - digits); cp++; } @@ -51,8 +52,9 @@ hextolfp( while (*cp != '\0' && (cp - cpstart) < 8 && (ind = strchr(digits, *cp)) != NULL) { dec_f = dec_f << 4; /* multiply by 16 */ - dec_f += ((ind - digits) > 15) ? (ind - digits) - 6 - : (ind - digits); + dec_f += ((ind - digits) > 15) + ? (u_long)(ind - digits - 6) + : (u_long)(ind - digits); cp++; } diff --git a/libntp/mstolfp.c b/libntp/mstolfp.c index 828b14cfb..7da20dc91 100644 --- a/libntp/mstolfp.c +++ b/libntp/mstolfp.c @@ -70,8 +70,7 @@ mstolfp( */ *bp++ = '.'; if ((cpdec - cp) < 3) { - register int i = 3 - (cpdec - cp); - + size_t i = 3 - (cpdec - cp); do { *bp++ = '0'; } while (--i > 0); diff --git a/libntp/msyslog.c b/libntp/msyslog.c index cc8868f8e..9682d3002 100644 --- a/libntp/msyslog.c +++ b/libntp/msyslog.c @@ -331,7 +331,7 @@ msnprintf( ) { va_list ap; - size_t rc; + int rc; va_start(ap, fmt); rc = mvsnprintf(buf, bufsiz, fmt, ap); diff --git a/libntp/ntp_crypto_rnd.c b/libntp/ntp_crypto_rnd.c index 96348f2e8..2a4f91aff 100644 --- a/libntp/ntp_crypto_rnd.c +++ b/libntp/ntp_crypto_rnd.c @@ -16,6 +16,7 @@ #include #include +#include "safecast.h" #ifdef USE_OPENSSL_CRYPTO_RAND #include @@ -93,7 +94,7 @@ ntp_crypto_random_buf( #ifdef USE_OPENSSL_CRYPTO_RAND int rc; - rc = RAND_bytes(buf, nbytes); + rc = RAND_bytes(buf, size2int_chk(nbytes)); if (1 != rc) { unsigned long err; char *err_str; diff --git a/libntp/ntp_lineedit.c b/libntp/ntp_lineedit.c index a2b2d2934..ebd456ac5 100644 --- a/libntp/ntp_lineedit.c +++ b/libntp/ntp_lineedit.c @@ -29,6 +29,7 @@ #include "ntp.h" #include "ntp_stdlib.h" #include "ntp_lineedit.h" +#include "safecast.h" #define MAXEDITLINE 512 @@ -213,7 +214,7 @@ ntp_readline( line = fgets(line_buf, sizeof(line_buf), stdin); if (NULL != line && *line) { - *pcount = strlen(line); + *pcount = (int)strlen(line); /* cannot overflow here */ line = estrdup(line); } else line = NULL; diff --git a/libntp/ntp_worker.c b/libntp/ntp_worker.c index 32970da0d..f5642e10d 100644 --- a/libntp/ntp_worker.c +++ b/libntp/ntp_worker.c @@ -150,7 +150,8 @@ available_blocking_child_slot(void) prev_octets); blocking_children_alloc = new_alloc; - return prev_alloc; + /* assume we'll never have enough workers to overflow u_int */ + return (u_int)prev_alloc; } diff --git a/libntp/snprintf.c b/libntp/snprintf.c index 2b6a37473..f4685e1ad 100644 --- a/libntp/snprintf.c +++ b/libntp/snprintf.c @@ -889,19 +889,19 @@ rpl_vsnprintf(char *str, size_t size, const char *format, va_list args) switch (cflags) { case PRINT_C_CHAR: charptr = va_arg(args, signed char *); - *charptr = len; + *charptr = (signed char)len; break; case PRINT_C_SHORT: shortptr = va_arg(args, short int *); - *shortptr = len; + *shortptr = (short int)len; break; case PRINT_C_LONG: longptr = va_arg(args, long int *); - *longptr = len; + *longptr = (long int)len; break; case PRINT_C_LLONG: llongptr = va_arg(args, LLONG *); - *llongptr = len; + *llongptr = (LLONG)len; break; case PRINT_C_SIZE: /* @@ -912,19 +912,19 @@ rpl_vsnprintf(char *str, size_t size, const char *format, va_list args) * size_t argument." (7.19.6.1, 7) */ sizeptr = va_arg(args, SSIZE_T *); - *sizeptr = len; + *sizeptr = (SSIZE_T)len; break; case PRINT_C_INTMAX: intmaxptr = va_arg(args, INTMAX_T *); - *intmaxptr = len; + *intmaxptr = (INTMAX_T)len; break; case PRINT_C_PTRDIFF: ptrdiffptr = va_arg(args, PTRDIFF_T *); - *ptrdiffptr = len; + *ptrdiffptr = (PTRDIFF_T)len; break; default: intptr = va_arg(args, int *); - *intptr = len; + *intptr = (int)len; break; } break; @@ -1209,7 +1209,7 @@ again: * Factor of ten with the number of digits needed for the fractional * part. For example, if the precision is 3, the mask will be 1000. */ - mask = mypow10(precision); + mask = (UINTMAX_T)mypow10(precision); /* * We "cheat" by converting the fractional part to integer by * multiplying by a factor of ten. @@ -1461,7 +1461,7 @@ cast(LDOUBLE value) if (value >= UINTMAX_MAX) return UINTMAX_MAX; - result = value; + result = (UINTMAX_T)value; /* * At least on NetBSD/sparc64 3.0.2 and 4.99.30, casting long double to * an integer type converts e.g. 1.9 to 2 instead of 1 (which violates diff --git a/libparse/clk_computime.c b/libparse/clk_computime.c index 5026232ea..7273ac762 100644 --- a/libparse/clk_computime.c +++ b/libparse/clk_computime.c @@ -157,7 +157,7 @@ inp_computime( { unsigned int rtc; - parseprintf(DD_PARSE, ("inp_computime(0x%lx, 0x%x, ...)\n", (long)parseio, ch)); + parseprintf(DD_PARSE, ("inp_computime(0x%p, 0x%x, ...)\n", (void*)parseio, ch)); switch (ch) { diff --git a/libparse/clk_dcf7000.c b/libparse/clk_dcf7000.c index f1da9ef84..0621cd564 100644 --- a/libparse/clk_dcf7000.c +++ b/libparse/clk_dcf7000.c @@ -158,7 +158,7 @@ inp_dcf7000( { unsigned int rtc; - parseprintf(DD_PARSE, ("inp_dcf7000(0x%lx, 0x%x, ...)\n", (long)parseio, ch)); + parseprintf(DD_PARSE, ("inp_dcf7000(0x%p, 0x%x, ...)\n", (void*)parseio, ch)); switch (ch) { diff --git a/libparse/clk_hopf6021.c b/libparse/clk_hopf6021.c index 357ac2ec0..235962890 100644 --- a/libparse/clk_hopf6021.c +++ b/libparse/clk_hopf6021.c @@ -227,7 +227,7 @@ inp_hopf6021( { unsigned int rtc; - parseprintf(DD_PARSE, ("inp_hopf6021(0x%lx, 0x%x, ...)\n", (long)parseio, ch)); + parseprintf(DD_PARSE, ("inp_hopf6021(0x%p, 0x%x, ...)\n", (void*)parseio, ch)); switch (ch) { diff --git a/libparse/clk_meinberg.c b/libparse/clk_meinberg.c index 9d2b67638..e4ebf0acc 100644 --- a/libparse/clk_meinberg.c +++ b/libparse/clk_meinberg.c @@ -434,7 +434,7 @@ mbg_input( { unsigned int rtc; - parseprintf(DD_PARSE, ("mbg_input(0x%lx, 0x%x, ...)\n", (long)parseio, ch)); + parseprintf(DD_PARSE, ("mbg_input(0x%p, 0x%x, ...)\n", (void*)parseio, ch)); switch (ch) { @@ -602,7 +602,7 @@ gps_input( msg_buf = (struct msg_buf *)parseio->parse_pdata; - parseprintf(DD_PARSE, ("gps_input(0x%lx, 0x%x, ...)\n", (long)parseio, ch)); + parseprintf(DD_PARSE, ("gps_input(0x%p, 0x%x, ...)\n", (void*)parseio, ch)); if (!msg_buf) return PARSE_INP_SKIP; diff --git a/libparse/clk_rawdcf.c b/libparse/clk_rawdcf.c index ca4326336..e22ebb0a4 100644 --- a/libparse/clk_rawdcf.c +++ b/libparse/clk_rawdcf.c @@ -627,7 +627,7 @@ inp_rawdcf( { static struct timeval timeout = { 1, 500000 }; /* 1.5 secongs denote second #60 */ - parseprintf(DD_PARSE, ("inp_rawdcf(0x%lx, 0x%x, ...)\n", (long)parseio, ch)); + parseprintf(DD_PARSE, ("inp_rawdcf(0x%p, 0x%x, ...)\n", (void*)parseio, ch)); parseio->parse_dtime.parse_stime = *tstamp; /* collect timestamp */ diff --git a/libparse/clk_rcc8000.c b/libparse/clk_rcc8000.c index a690e588b..11d52acc5 100644 --- a/libparse/clk_rcc8000.c +++ b/libparse/clk_rcc8000.c @@ -141,7 +141,7 @@ inp_rcc8000( { unsigned int rtc; - parseprintf(DD_PARSE, ("inp_rcc8000(0x%lx, 0x%x, ...)\n", (long)parseio, ch)); + parseprintf(DD_PARSE, ("inp_rcc8000(0x%p, 0x%x, ...)\n", (void*)parseio, ch)); switch (ch) { diff --git a/libparse/clk_schmid.c b/libparse/clk_schmid.c index c4f02b07a..d85b1a5da 100644 --- a/libparse/clk_schmid.c +++ b/libparse/clk_schmid.c @@ -205,7 +205,7 @@ inp_schmid( { unsigned int rtc; - parseprintf(DD_PARSE, ("inp_schmid(0x%lx, 0x%x, ...)\n", (long)parseio, ch)); + parseprintf(DD_PARSE, ("inp_schmid(0x%p, 0x%x, ...)\n", (void*)parseio, ch)); switch ((uint8_t)ch) { diff --git a/libparse/clk_trimtaip.c b/libparse/clk_trimtaip.c index 426e897be..a60d01ec1 100644 --- a/libparse/clk_trimtaip.c +++ b/libparse/clk_trimtaip.c @@ -155,7 +155,7 @@ inp_trimtaip( { unsigned int rtc; - parseprintf(DD_PARSE, ("inp_trimtaip(0x%lx, 0x%x, ...)\n", (long)parseio, ch)); + parseprintf(DD_PARSE, ("inp_trimtaip(0x%p, 0x%x, ...)\n", (void*)parseio, ch)); switch (ch) { diff --git a/libparse/clk_varitext.c b/libparse/clk_varitext.c index 022549e82..0d830354d 100644 --- a/libparse/clk_varitext.c +++ b/libparse/clk_varitext.c @@ -58,12 +58,12 @@ extern int printf (const char *, ...); #endif -static const u_char VT_INITIALISED = 0x01; -static const u_char VT_SYNCHRONISED = 0x02; -static const u_char VT_ALARM_STATE = 0x04; +/* static const u_char VT_INITIALISED = 0x01; */ +/* static const u_char VT_SYNCHRONISED = 0x02; */ +/* static const u_char VT_ALARM_STATE = 0x04; */ static const u_char VT_BST = 0x08; -static const u_char VT_SEASON_CHANGE = 0x10; -static const u_char VT_LAST_TELEGRAM_OK = 0x20; +/* static const u_char VT_SEASON_CHANGE = 0x10; */ +/* static const u_char VT_LAST_TELEGRAM_OK = 0x20; */ /* * The Varitext receiver sends a datagram in the following format every minute @@ -195,7 +195,7 @@ inp_varitext( struct varitext *t = (struct varitext *)parseio->parse_pdata; int rtc; - parseprintf(DD_PARSE, ("inp_varitext(0x%lx, 0x%x, ...)\n", (long)parseio, ch)); + parseprintf(DD_PARSE, ("inp_varitext(0x%p, 0x%x, ...)\n", (void*)parseio, ch)); if (!t) return PARSE_INP_SKIP; /* local data not allocated - sigh! */ diff --git a/libparse/clk_wharton.c b/libparse/clk_wharton.c index a65bc5386..e9e3d8464 100644 --- a/libparse/clk_wharton.c +++ b/libparse/clk_wharton.c @@ -137,7 +137,7 @@ inp_wharton_400a( { unsigned int rtc; - parseprintf(DD_PARSE, ("inp_wharton_400a(0x%lx, 0x%x, ...)\n", (long)parseio, ch)); + parseprintf(DD_PARSE, ("inp_wharton_400a(0x%p, 0x%x, ...)\n", (void*)parseio, ch)); switch (ch) { diff --git a/libparse/parse.c b/libparse/parse.c index 64167f152..69395ac4a 100644 --- a/libparse/parse.c +++ b/libparse/parse.c @@ -288,7 +288,7 @@ parse_ioread( break; } - parseprintf(DD_PARSE, ("parse_ioread(0x%lx, char=0x%x, ..., ...)\n", (unsigned long)parseio, ch & 0xFF)); + parseprintf(DD_PARSE, ("parse_ioread(0x%p, char=0x%x, ..., ...)\n", (void*)parseio, ch & 0xFF)); if (!clockformats[parseio->parse_lformat]->convert) { diff --git a/ntpd/ntp_control.c b/ntpd/ntp_control.c index 77363117b..2e174d021 100644 --- a/ntpd/ntp_control.c +++ b/ntpd/ntp_control.c @@ -846,7 +846,7 @@ ctl_error( u_char errcode ) { - int maclen; + size_t maclen; numctlerrors++; DPRINTF(3, ("sending control error %u\n", errcode)); @@ -1248,10 +1248,10 @@ ctl_flushpkt( ) { size_t i; - int dlen; - int sendlen; - int maclen; - int totlen; + size_t dlen; + size_t sendlen; + size_t maclen; + size_t totlen; keyid_t keyid; dlen = datapt - rpkt.u.data; diff --git a/ntpd/ntp_crypto.c b/ntpd/ntp_crypto.c index 7ce7ccd26..7dd39a7c9 100644 --- a/ntpd/ntp_crypto.c +++ b/ntpd/ntp_crypto.c @@ -473,9 +473,9 @@ crypto_recv( } /* Check if the declared size fits into the remaining - * buffer. + * buffer. We *know* 'macbytes' > 0 here! */ - if (len > macbytes) { + if (len > (u_int)macbytes) { DPRINTF(1, ("crypto_recv: possible attack detected, associd %d\n", associd)); return XEVNT_LEN; diff --git a/ntpd/ntp_io.c b/ntpd/ntp_io.c index 5fc6ed52a..dd23459df 100644 --- a/ntpd/ntp_io.c +++ b/ntpd/ntp_io.c @@ -41,6 +41,7 @@ #include "timevalops.h" #include "timespecops.h" #include "ntpd-opts.h" +#include "safecast.h" /* Don't include ISC's version of IPv6 variables and structures */ #define ISC_IPV6_H 1 @@ -772,7 +773,7 @@ is_ip_address( hints.ai_flags |= AI_NUMERICHOST; if (getaddrinfo(tmpbuf, NULL, &hints, &result) == 0) { AF(addr) = AF_INET6; - resaddr6 = (struct sockaddr_in6 *)result->ai_addr; + resaddr6 = UA_PTR(struct sockaddr_in6, result->ai_addr); SET_ADDR6N(addr, resaddr6->sin6_addr); SET_SCOPE(addr, resaddr6->sin6_scope_id); @@ -3365,7 +3366,7 @@ fetch_timestamp( #endif /* HAVE_BINTIME */ #ifdef HAVE_TIMESTAMPNS case SCM_TIMESTAMPNS: - tsp = (struct timespec *)CMSG_DATA(cmsghdr); + tsp = UA_PTR(struct timespec, CMSG_DATA(cmsghdr)); if (sys_tick > measured_tick && sys_tick > 1e-9) { ticks = (unsigned long)((tsp->tv_nsec * 1e-9) / @@ -3666,8 +3667,7 @@ input_handler( fds = activefds; tvzero.tv_sec = tvzero.tv_usec = 0; - n = select(maxactivefd + 1, &fds, (fd_set *)0, (fd_set *)0, - &tvzero); + n = select(maxactivefd + 1, &fds, NULL, NULL, &tvzero); /* * If there are no packets waiting just return @@ -4447,7 +4447,7 @@ close_and_delete_fd_from_list( break; case FD_TYPE_FILE: - closeserial(lsock->fd); + closeserial((int)lsock->fd); break; default: @@ -4643,7 +4643,7 @@ process_routing_msgs(struct asyncio_reader *reader) * process routing message */ #ifdef HAVE_RTNETLINK - for (nh = (struct nlmsghdr *)buffer; + for (nh = UA_PTR(struct nlmsghdr, buffer); NLMSG_OK(nh, cnt); nh = NLMSG_NEXT(nh, cnt)) { msg_type = nh->nlmsg_type; diff --git a/ntpd/ntp_loopfilter.c b/ntpd/ntp_loopfilter.c index b19d95914..4b38aa8fd 100644 --- a/ntpd/ntp_loopfilter.c +++ b/ntpd/ntp_loopfilter.c @@ -458,6 +458,7 @@ local_clock( double dtemp, etemp; /* double temps */ char tbuf[80]; /* report buffer */ + (void)ntp_adj_ret; /* not always used below... */ /* * If the loop is opened or the NIST LOCKCLOCK is in use, * monitor and record the offsets anyway in order to determine @@ -1066,6 +1067,7 @@ set_freq( const char * loop_desc; int ntp_adj_ret; + (void)ntp_adj_ret; /* not always used below... */ drift_comp = freq; loop_desc = "ntpd"; #ifdef KERNEL_PLL diff --git a/ntpd/ntp_proto.c b/ntpd/ntp_proto.c index 2a15d7242..b1f74de84 100644 --- a/ntpd/ntp_proto.c +++ b/ntpd/ntp_proto.c @@ -3565,7 +3565,7 @@ fast_xmit( struct pkt xpkt; /* transmit packet structure */ struct pkt *rpkt; /* receive packet structure */ l_fp xmt_tx, xmt_ty; - int sendlen; + size_t sendlen; #ifdef AUTOKEY u_int32 temp32; #endif @@ -3687,9 +3687,10 @@ fast_xmit( #ifdef DEBUG if (debug) printf( - "transmit: at %ld %s->%s mode %d len %d\n", + "transmit: at %ld %s->%s mode %d len %lu\n", current_time, stoa(&rbufp->dstadr->sin), - stoa(&rbufp->recv_srcadr), xmode, sendlen); + stoa(&rbufp->recv_srcadr), xmode, + (u_long)sendlen); #endif return; } @@ -3717,7 +3718,7 @@ fast_xmit( */ cookie = session_key(&rbufp->recv_srcadr, &rbufp->dstadr->sin, 0, sys_private, 0); - if (rbufp->recv_length > sendlen + (int)MAX_MAC_LEN) { + if ((size_t)rbufp->recv_length > sendlen + MAX_MAC_LEN) { session_key(&rbufp->dstadr->sin, &rbufp->recv_srcadr, xkeyid, 0, 2); temp32 = CRYPTO_RESP; @@ -3744,9 +3745,10 @@ fast_xmit( #ifdef DEBUG if (debug) printf( - "transmit: at %ld %s->%s mode %d keyid %08x len %d\n", + "transmit: at %ld %s->%s mode %d keyid %08x len %lu\n", current_time, ntoa(&rbufp->dstadr->sin), - ntoa(&rbufp->recv_srcadr), xmode, xkeyid, sendlen); + ntoa(&rbufp->recv_srcadr), xmode, xkeyid, + (u_long)sendlen); #endif } diff --git a/ntpd/ntp_refclock.c b/ntpd/ntp_refclock.c index 1f16ca797..d25cc2c0d 100644 --- a/ntpd/ntp_refclock.c +++ b/ntpd/ntp_refclock.c @@ -732,9 +732,9 @@ process_refclock_packet( */ int refclock_open( - char *dev, /* device name pointer */ - u_int speed, /* serial port speed (code) */ - u_int lflags /* line discipline flags */ + const char *dev, /* device name pointer */ + u_int speed, /* serial port speed (code) */ + u_int lflags /* line discipline flags */ ) { int fd; diff --git a/ntpd/ntp_request.c b/ntpd/ntp_request.c index 6073f99c4..fa78ce1e4 100644 --- a/ntpd/ntp_request.c +++ b/ntpd/ntp_request.c @@ -2006,11 +2006,11 @@ do_trustkey( u_long trust ) { - register u_long *kp; + register uint32_t *kp; register int items; items = INFO_NITEMS(inpkt->err_nitems); - kp = (u_long *)&inpkt->u; + kp = (uint32_t*)&inpkt->u; while (items-- > 0) { authtrust(*kp, trust); kp++; diff --git a/ntpd/ntp_restrict.c b/ntpd/ntp_restrict.c index 82bbaef25..0b5fa2e3f 100644 --- a/ntpd/ntp_restrict.c +++ b/ntpd/ntp_restrict.c @@ -160,7 +160,7 @@ alloc_res4(void) const size_t count = INC_RESLIST4; restrict_u * rl; restrict_u * res; - int i; + size_t i; UNLINK_HEAD_SLIST(res, resfree4, link); if (res != NULL) @@ -186,7 +186,7 @@ alloc_res6(void) const size_t count = INC_RESLIST6; restrict_u * rl; restrict_u * res; - int i; + size_t i; UNLINK_HEAD_SLIST(res, resfree6, link); if (res != NULL) diff --git a/ntpd/ntp_signd.c b/ntpd/ntp_signd.c index 2ba11d086..857dcbf61 100644 --- a/ntpd/ntp_signd.c +++ b/ntpd/ntp_signd.c @@ -66,7 +66,7 @@ write_all(int fd, const void *buf, size_t len) while (len) { int n = write(fd, buf, len); if (n <= 0) return total; - buf = n + (char *)buf; + buf = n + (const char *)buf; len -= n; total += n; } @@ -110,9 +110,10 @@ recv_packet(int fd, char **buf, uint32_t *len) { if (read_all(fd, len, sizeof(*len)) != sizeof(*len)) return -1; *len = ntohl(*len); - (*buf) = emalloc(*len); + *buf = emalloc(*len); if (read_all(fd, *buf, *len) != *len) { free(*buf); + *buf = NULL; return -1; } return 0; diff --git a/ntpd/ntp_timer.c b/ntpd/ntp_timer.c index 828aa8c27..03084a353 100644 --- a/ntpd/ntp_timer.c +++ b/ntpd/ntp_timer.c @@ -626,18 +626,19 @@ check_leapsec( * announce the leap event has happened. */ const char *leapmsg = NULL; - if (lsdata.warped < 0) { + double lswarp = lsdata.warped; + if (lswarp < 0.0) { if (clock_max_back > 0.0 && - clock_max_back < fabs(lsdata.warped)) { - step_systime(lsdata.warped); + clock_max_back < -lswarp) { + step_systime(lswarp); leapmsg = leapmsg_p_step; } else { leapmsg = leapmsg_p_slew; } - } else if (lsdata.warped > 0) { + } else if (lswarp > 0.0) { if (clock_max_fwd > 0.0 && - clock_max_fwd < fabs(lsdata.warped)) { - step_systime(lsdata.warped); + clock_max_fwd < lswarp) { + step_systime(lswarp); leapmsg = leapmsg_n_step; } else { leapmsg = leapmsg_n_slew; diff --git a/ntpd/ntp_util.c b/ntpd/ntp_util.c index c4bc9011a..3a9581982 100644 --- a/ntpd/ntp_util.c +++ b/ntpd/ntp_util.c @@ -334,7 +334,7 @@ stats_config( { FILE *fp; const char *value; - int len; + size_t len; double old_drift; l_fp now; time_t ttnow; @@ -437,7 +437,7 @@ stats_config( (int)sizeof(statsdir) - 2); } else { int add_dir_sep; - int value_l; + size_t value_l; /* Add a DIR_SEP unless we already have one. */ value_l = strlen(value); @@ -933,7 +933,7 @@ getauthkeys( const char *keyfile ) { - int len; + size_t len; len = strlen(keyfile); if (!len) diff --git a/ntpd/refclock_parse.c b/ntpd/refclock_parse.c index 8e9059573..eb69dcb16 100644 --- a/ntpd/refclock_parse.c +++ b/ntpd/refclock_parse.c @@ -1630,9 +1630,9 @@ list_err( static char * mkreadable( char *buffer, - long blen, + size_t blen, const char *src, - u_long srclen, + size_t srclen, int hex ) { diff --git a/ntpd/refclock_shm.c b/ntpd/refclock_shm.c index 6ab5d0267..f3e7f519d 100644 --- a/ntpd/refclock_shm.c +++ b/ntpd/refclock_shm.c @@ -381,7 +381,8 @@ static inline void memory_barrier(void) static enum segstat_t shm_query(volatile struct shmTime *shm_in, struct shm_stat_t *shm_stat) /* try to grab a sample from the specified SHM segment */ { - volatile struct shmTime shmcopy, *shm = shm_in; + struct shmTime shmcopy; + volatile struct shmTime *shm = shm_in; volatile int cnt; unsigned int cns_new, rns_new; @@ -418,7 +419,7 @@ static enum segstat_t shm_query(volatile struct shmTime *shm_in, struct shm_stat * (b) memset compiles to an uninterruptible single-instruction bitblt. */ memory_barrier(); - memcpy((void *)&shmcopy, (void *)shm, sizeof(struct shmTime)); + memcpy(&shmcopy, (void*)(uintptr_t)shm, sizeof(struct shmTime)); shm->valid = 0; memory_barrier(); diff --git a/ntpd/refclock_true.c b/ntpd/refclock_true.c index 67ba6dfbe..2799f3ee5 100644 --- a/ntpd/refclock_true.c +++ b/ntpd/refclock_true.c @@ -637,7 +637,7 @@ true_send( pp = peer->procptr; if (!(pp->sloppyclockflag & CLK_FLAG1)) { - int len = strlen(cmd); + size_t len = strlen(cmd); true_debug(peer, "Send '%s'\n", cmd); if (write(pp->io.fd, cmd, (unsigned)len) != len) diff --git a/ntpd/refclock_tsyncpci.c b/ntpd/refclock_tsyncpci.c index e70a7cf9c..e14a3fd12 100644 --- a/ntpd/refclock_tsyncpci.c +++ b/ntpd/refclock_tsyncpci.c @@ -549,7 +549,7 @@ static void tsync_poll(int unit, struct peer *peer) memcpy(ppsRef, pRefObj->pps, TSYNC_REF_LEN); // Extract the Clock Service Time Scale and convert to correct byte order - memcpy(&tmscl, ((TIME_SCALE*)(it1->payloads)), sizeof(tmscl)); + memcpy(&tmscl, it1->payloads, sizeof(tmscl)); tmscl = ntohl(tmscl); // Extract leap second info from ioctl payload and perform byte swapping diff --git a/ntpdate/ntpdate.c b/ntpdate/ntpdate.c index 9831929c4..a4271605c 100644 --- a/ntpdate/ntpdate.c +++ b/ntpdate/ntpdate.c @@ -561,8 +561,8 @@ ntpdatemain ( nfound = poll(rdfdes, (unsigned int)nbsock, timeout.tv_sec * 1000); #else - nfound = select(maxfd, &rdfdes, (fd_set *)0, - (fd_set *)0, &timeout); + nfound = select(maxfd, &rdfdes, NULL, NULL, + &timeout); #endif if (nfound > 0) input_handler(); @@ -696,7 +696,7 @@ transmit( * If not, just timestamp it and send it away. */ if (sys_authenticate) { - int len; + size_t len; xpkt.exten[0] = htonl(sys_authkey); get_systime(&server->xmt); @@ -808,11 +808,11 @@ receive( printf("receive: rpkt keyid=%ld sys_authkey=%ld decrypt=%ld\n", (long int)ntohl(rpkt->exten[0]), (long int)sys_authkey, (long int)authdecrypt(sys_authkey, (u_int32 *)rpkt, - LEN_PKT_NOMAC, (int)(rbufp->recv_length - LEN_PKT_NOMAC))); + LEN_PKT_NOMAC, (size_t)(rbufp->recv_length - LEN_PKT_NOMAC))); if (has_mac && ntohl(rpkt->exten[0]) == sys_authkey && authdecrypt(sys_authkey, (u_int32 *)rpkt, LEN_PKT_NOMAC, - (int)(rbufp->recv_length - LEN_PKT_NOMAC))) + (size_t)(rbufp->recv_length - LEN_PKT_NOMAC))) is_authentic = 1; if (debug) printf("receive: authentication %s\n", @@ -1888,7 +1888,7 @@ input_handler(void) #else fd_set fds; #endif - int fdc = 0; + SOCKET fdc = 0; /* * Do a poll to see if we have data @@ -1912,7 +1912,7 @@ input_handler(void) #else fds = fdmask; - n = select(maxfd, &fds, (fd_set *)0, (fd_set *)0, &tvzero); + n = select(maxfd, &fds, NULL, NULL, &tvzero); /* * Determine which socket received data diff --git a/ntpdc/ntpdc.c b/ntpdc/ntpdc.c index ab177885b..bef9ca365 100644 --- a/ntpdc/ntpdc.c +++ b/ntpdc/ntpdc.c @@ -32,6 +32,7 @@ #include "ntp_libopts.h" #include "ntpdc-opts.h" +#include "safecast.h" #ifdef SYS_VXWORKS /* vxWorks needs mode flag -casey*/ @@ -74,8 +75,8 @@ int ntpdcmain (int, char **); static int openhost (const char *); static int sendpkt (void *, size_t); static void growpktdata (void); -static int getresponse (int, int, int *, int *, char **, int); -static int sendrequest (int, int, int, u_int, size_t, char *); +static int getresponse (int, int, size_t *, size_t *, const char **, size_t); +static int sendrequest (int, int, int, size_t, size_t, const char *); static void getcmds (void); static RETSIGTYPE abortcmd (int); static void docmd (const char *); @@ -526,10 +527,11 @@ openhost( #ifdef SYS_VXWORKS if (connect(sockfd, (struct sockaddr *)&hostaddr, - sizeof(hostaddr)) == -1) { + sizeof(hostaddr)) == -1) #else - if (connect(sockfd, ai->ai_addr, ai->ai_addrlen) == -1) { + if (connect(sockfd, ai->ai_addr, ai->ai_addrlen) == -1) #endif /* SYS_VXWORKS */ + { error("connect"); exit(-1); } @@ -582,18 +584,18 @@ static int getresponse( int implcode, int reqcode, - int *ritems, - int *rsize, - char **rdata, - int esize + size_t *ritems, + size_t *rsize, + const char **rdata, + size_t esize ) { struct resp_pkt rpkt; struct sock_timeval tvo; - int items; - int i; - int size; - int datasize; + size_t items; + size_t i; + size_t size; + size_t datasize; char *datap; char *tmp_data; char haveseq[MAXSEQ+1]; @@ -603,7 +605,7 @@ getresponse( int seq; fd_set fds; ssize_t n; - int pad; + size_t pad; /* * This is pretty tricky. We may get between 1 and many packets @@ -628,8 +630,7 @@ getresponse( tvo = tvsout; FD_SET(sockfd, &fds); - n = select(sockfd+1, &fds, (fd_set *)0, (fd_set *)0, &tvo); - + n = select(sockfd+1, &fds, NULL, NULL, &tvo); if (n == -1) { warning("select fails"); return -1; @@ -640,7 +641,8 @@ getresponse( */ if (firstpkt) { (void) fprintf(stderr, - "%s: timed out, nothing received\n", currenthost); + "%s: timed out, nothing received\n", + currenthost); return ERR_TIMEOUT; } else { (void) fprintf(stderr, @@ -740,7 +742,7 @@ getresponse( if ((size_t)datasize > (n-RESP_HEADER_SIZE)) { if (debug) printf( - "Received items %d, size %d (total %d), data in packet is %zu\n", + "Received items %zu, size %zu (total %zu), data in packet is %zu\n", items, size, datasize, n-RESP_HEADER_SIZE); goto again; } @@ -751,7 +753,7 @@ getresponse( */ if (!firstpkt && size != *rsize) { if (debug) - printf("Received itemsize %d, previous %d\n", + printf("Received itemsize %zu, previous %zu\n", size, *rsize); goto again; } @@ -781,7 +783,7 @@ getresponse( * So far, so good. Copy this data into the output array. */ if ((datap + datasize + (pad * items)) > (pktdata + pktdatasize)) { - int offset = datap - pktdata; + size_t offset = datap - pktdata; growpktdata(); *rdata = pktdata; /* might have been realloced ! */ datap = pktdata + offset; @@ -844,9 +846,9 @@ sendrequest( int implcode, int reqcode, int auth, - u_int qitems, + size_t qitems, size_t qsize, - char *qdata + const char *qdata ) { struct req_pkt qpkt; @@ -855,7 +857,7 @@ sendrequest( u_long key_id; l_fp ts; l_fp * ptstamp; - int maclen; + size_t maclen; char * pass; ZERO(qpkt); @@ -918,13 +920,14 @@ sendrequest( get_systime(&ts); L_ADD(&ts, &delay_time); HTONL_FP(&ts, ptstamp); - maclen = authencrypt(info_auth_keyid, (void *)&qpkt, reqsize); + maclen = authencrypt( + info_auth_keyid, (void *)&qpkt, size2int_chk(reqsize)); if (!maclen) { fprintf(stderr, "Key not found\n"); return 1; } else if (maclen != (int)(info_auth_hashlen + sizeof(keyid_t))) { fprintf(stderr, - "%d octet MAC, %zu expected with %zu octet digest\n", + "%zu octet MAC, %zu expected with %zu octet digest\n", maclen, (info_auth_hashlen + sizeof(keyid_t)), info_auth_hashlen); return 1; @@ -941,12 +944,12 @@ doquery( int implcode, int reqcode, int auth, - int qitems, - int qsize, - char *qdata, - int *ritems, - int *rsize, - char **rdata, + size_t qitems, + size_t qsize, + const char *qdata, + size_t *ritems, + size_t *rsize, + const char **rdata, int quiet_mask, int esize ) @@ -972,8 +975,7 @@ again: tvzero.tv_sec = tvzero.tv_usec = 0; FD_ZERO(&fds); FD_SET(sockfd, &fds); - res = select(sockfd+1, &fds, (fd_set *)0, (fd_set *)0, &tvzero); - + res = select(sockfd+1, &fds, NULL, NULL, &tvzero); if (res == -1) { warning("polling select"); return -1; @@ -1271,7 +1273,7 @@ findcmd( ) { register struct xcmd *cl; - register int clen; + size_t clen; int nmatch; struct xcmd *nearmatch = NULL; struct xcmd *clist; @@ -1384,7 +1386,7 @@ getarg( return 0; } argp->uval *= 10; - argp->uval += (cp - digits); + argp->uval += (u_long)(cp - digits); } while (*(++np) != '\0'); if (isneg) { diff --git a/ntpdc/ntpdc.h b/ntpdc/ntpdc.h index 6da4a5cb7..4dfd1eb90 100644 --- a/ntpdc/ntpdc.h +++ b/ntpdc/ntpdc.h @@ -63,5 +63,5 @@ extern int impl_ver; extern int showhostnames; extern int s_port; -extern int doquery (int, int, int, int, int, char *, int *, int *, char **, int, int); +extern int doquery (int, int, int, size_t, size_t, const char *, size_t *, size_t *, const char **, int, int); extern const char * nntohost (sockaddr_u *); diff --git a/ntpdc/ntpdc_ops.c b/ntpdc/ntpdc_ops.c index be8ffa24a..2f57768b4 100644 --- a/ntpdc/ntpdc_ops.c +++ b/ntpdc/ntpdc_ops.c @@ -31,9 +31,9 @@ /* * utility functions */ -static int checkitems (int, FILE *); -static int checkitemsize (int, int); -static int check1item (int, FILE *); +static int checkitems (size_t, FILE *); +static int checkitemsize (size_t, size_t); +static int check1item (size_t, FILE *); /* * Declarations for command handlers in here @@ -288,7 +288,7 @@ do { \ */ static int checkitems( - int items, + size_t items, FILE *fp ) { @@ -305,14 +305,14 @@ checkitems( */ static int checkitemsize( - int itemsize, - int expected + size_t itemsize, + size_t expected ) { if (itemsize != expected) { (void) fprintf(stderr, - "***Incorrect item size returned by remote host (%d should be %d)\n", - itemsize, expected); + "***Incorrect item size returned by remote host (%lu should be %lu)\n", + (u_long)itemsize, (u_long)expected); return 0; } return 1; @@ -324,7 +324,7 @@ checkitemsize( */ static int check1item( - int items, + size_t items, FILE *fp ) { @@ -333,8 +333,8 @@ check1item( return 0; } if (items > 1) { - (void) fprintf(fp, "Expected one item in response, got %d\n", - items); + (void) fprintf(fp, "Expected one item in response, got %lu\n", + (u_long)items); return 0; } return 1; @@ -353,8 +353,8 @@ peerlist( { struct info_peer_list *plist; sockaddr_u paddr; - int items; - int itemsize; + size_t items; + size_t itemsize; int res; again: @@ -430,8 +430,8 @@ dopeers( struct info_peer_summary *plist; sockaddr_u dstadr; sockaddr_u srcadr; - int items; - int itemsize; + size_t items; + size_t itemsize; int ntp_poll; int res; int c; @@ -679,10 +679,10 @@ showpeer( struct info_peer *pp; /* 4 is the maximum number of peers which will fit in a packet */ struct info_peer_list *pl, plist[min(MAXARGS, 4)]; - int qitemlim; - int qitems; - int items; - int itemsize; + size_t qitemlim; + size_t qitems; + size_t items; + size_t itemsize; int res; int sendsize; @@ -753,12 +753,12 @@ peerstats( /* 4 is the maximum number of peers which will fit in a packet */ struct info_peer_list *pl, plist[min(MAXARGS, 4)]; sockaddr_u src, dst; - int qitemlim; - int qitems; - int items; - int itemsize; + size_t qitemlim; + size_t qitems; + size_t items; + size_t itemsize; int res; - int sendsize; + size_t sendsize; again: if (impl_ver == IMPL_XNTPD) @@ -871,8 +871,8 @@ loopinfo( ) { struct info_loop *il; - int items; - int itemsize; + size_t items; + size_t itemsize; int oneline = 0; int res; l_fp tempts; @@ -946,8 +946,8 @@ sysinfo( { struct info_sys *is; sockaddr_u peeraddr; - int items; - int itemsize; + size_t items; + size_t itemsize; int res; l_fp tempts; @@ -1035,8 +1035,8 @@ sysstats( ) { struct info_sys_stats *ss; - int items; - int itemsize; + size_t items; + size_t itemsize; int res; again: @@ -1101,8 +1101,8 @@ iostats( ) { struct info_io_stats *io; - int items; - int itemsize; + size_t items; + size_t itemsize; int res; again: @@ -1162,8 +1162,8 @@ memstats( { struct info_mem_stats *mem; int i; - int items; - int itemsize; + size_t items; + size_t itemsize; int res; again: @@ -1219,8 +1219,8 @@ timerstats( ) { struct info_timer_stats *tim; - int items; - int itemsize; + size_t items; + size_t itemsize; int res; again: @@ -1314,9 +1314,9 @@ doconfig( ) { struct conf_peer cpeer; - int items; - int itemsize; - char *dummy; + size_t items; + size_t itemsize; + const char *dummy; u_long keyid; u_int version; u_char minpoll; @@ -1480,13 +1480,13 @@ unconfig( { /* 8 is the maximum number of peers which will fit in a packet */ struct conf_unpeer *pl, plist[min(MAXARGS, 8)]; - int qitemlim; - int qitems; - int items; - int itemsize; - char *dummy; + size_t qitemlim; + size_t qitems; + size_t items; + size_t itemsize; + const char *dummy; int res; - int sendsize; + size_t sendsize; again: if (impl_ver == IMPL_XNTPD) @@ -1564,9 +1564,9 @@ doset( ) { struct conf_sys_flags sys; - int items; - int itemsize; - char *dummy; + size_t items; + size_t itemsize; + const char *dummy; int res; sys.flags = 0; @@ -1675,8 +1675,8 @@ reslist( struct info_restrict *rl; sockaddr_u resaddr; sockaddr_u maskaddr; - int items; - int itemsize; + size_t items; + size_t itemsize; int res; int skip; const char *addr; @@ -1827,9 +1827,9 @@ do_restrict( ) { struct conf_restrict cres; - int items; - int itemsize; - char *dummy; + size_t items; + size_t itemsize; + const char *dummy; u_int32 num; u_long bit; int i; @@ -1946,14 +1946,14 @@ monlist( FILE *fp ) { - char *struct_star; - struct info_monitor *ml; - struct info_monitor_1 *m1; - struct old_info_monitor *oml; + const char *struct_star; + const struct info_monitor *ml; + const struct info_monitor_1 *m1; + const struct old_info_monitor *oml; sockaddr_u addr; sockaddr_u dstadr; - int items; - int itemsize; + size_t items; + size_t itemsize; int res; int version = -1; @@ -1987,7 +1987,7 @@ again: if (itemsize == sizeof(struct info_monitor_1) || itemsize == v4sizeof(struct info_monitor_1)) { - m1 = (void *)struct_star; + m1 = (const void*)struct_star; fprintf(fp, "remote address port local address count m ver rstr avgint lstint\n"); fprintf(fp, @@ -2014,7 +2014,7 @@ again: } else if (itemsize == sizeof(struct info_monitor) || itemsize == v4sizeof(struct info_monitor)) { - ml = (void *) struct_star; + ml = (const void *)struct_star; fprintf(fp, " address port count mode ver rstr avgint lstint\n"); fprintf(fp, @@ -2039,7 +2039,7 @@ again: } } else if (itemsize == sizeof(struct old_info_monitor)) { - oml = (void *)struct_star; + oml = (const void *)struct_star; fprintf(fp, " address port count mode version lasttime firsttime\n"); fprintf(fp, @@ -2091,9 +2091,9 @@ reset( ) { struct reset_flags rflags; - int items; - int itemsize; - char *dummy; + size_t items; + size_t itemsize; + const char *dummy; int i; size_t res; int err; @@ -2148,13 +2148,13 @@ preset( { /* 8 is the maximum number of peers which will fit in a packet */ struct conf_unpeer *pl, plist[min(MAXARGS, 8)]; - int qitemlim; - int qitems; - int items; - int itemsize; - char *dummy; + size_t qitemlim; + size_t qitems; + size_t items; + size_t itemsize; + const char *dummy; int res; - int sendsize; + size_t sendsize; again: if (impl_ver == IMPL_XNTPD) @@ -2205,9 +2205,9 @@ readkeys( FILE *fp ) { - int items; - int itemsize; - char *dummy; + size_t items; + size_t itemsize; + const char *dummy; int res; again: @@ -2263,9 +2263,9 @@ do_trustkey( { u_long keyids[MAXARGS]; size_t i; - int items; - int itemsize; - char *dummy; + size_t items; + size_t itemsize; + const char *dummy; int ritems; int res; @@ -2302,8 +2302,8 @@ authinfo( ) { struct info_auth *ia; - int items; - int itemsize; + size_t items; + size_t itemsize; int res; again: @@ -2356,11 +2356,11 @@ traps( FILE *fp ) { - int i; + size_t i; struct info_trap *it; sockaddr_u trap_addr, local_addr; - int items; - int itemsize; + size_t items; + size_t itemsize; int res; again: @@ -2446,9 +2446,9 @@ do_addclr_trap( ) { struct conf_trap ctrap; - int items; - int itemsize; - char *dummy; + size_t items; + size_t itemsize; + const char *dummy; int res; int sendsize; @@ -2545,9 +2545,9 @@ do_changekey( ) { u_long key; - int items; - int itemsize; - char *dummy; + size_t items; + size_t itemsize; + const char *dummy; int res; @@ -2581,8 +2581,8 @@ ctlstats( ) { struct info_control *ic; - int items; - int itemsize; + size_t items; + size_t itemsize; int res; again: @@ -2648,10 +2648,10 @@ clockstat( struct info_clock *cl; /* 8 is the maximum number of clocks which will fit in a packet */ u_long clist[min(MAXARGS, 8)]; - int qitemlim; - int qitems; - int items; - int itemsize; + size_t qitemlim; + size_t qitems; + size_t items; + size_t itemsize; int res; l_fp ts; struct clktype *clk; @@ -2735,9 +2735,9 @@ fudge( ) { struct conf_fudge fudgedata; - int items; - int itemsize; - char *dummy; + size_t items; + size_t itemsize; + const char *dummy; l_fp ts; int res; long val; @@ -2822,10 +2822,10 @@ clkbug( /* 8 is the maximum number of clocks which will fit in a packet */ u_long clist[min(MAXARGS, 8)]; u_int32 ltemp; - int qitemlim; - int qitems; - int items; - int itemsize; + size_t qitemlim; + size_t qitems; + size_t items; + size_t itemsize; int res; int needsp; l_fp ts; @@ -2916,8 +2916,8 @@ kerninfo( ) { struct info_kernel *ik; - int items; - int itemsize; + size_t items; + size_t itemsize; int res; unsigned status; double tscale = 1e-6; @@ -3050,8 +3050,8 @@ static void iflist( FILE *fp, struct info_if_stats *ifs, - int items, - int itemsize, + size_t items, + size_t itemsize, int res ) { @@ -3113,8 +3113,8 @@ get_if_stats( ) { struct info_if_stats *ifs; - int items; - int itemsize; + size_t items; + size_t itemsize; int res; res = doquery(impl_ver, REQ_IF_STATS, 1, 0, 0, (char *)NULL, &items, @@ -3131,8 +3131,8 @@ do_if_reload( ) { struct info_if_stats *ifs; - int items; - int itemsize; + size_t items; + size_t itemsize; int res; res = doquery(impl_ver, REQ_IF_RELOAD, 1, 0, 0, (char *)NULL, &items, diff --git a/ntpq/libntpq.c b/ntpq/libntpq.c index becd956f2..3070e47b5 100644 --- a/ntpq/libntpq.c +++ b/ntpq/libntpq.c @@ -132,7 +132,7 @@ ntpq_getvar( { char * name; char * value; - int idatalen; + size_t idatalen; value = NULL; idatalen = (int)datalen; @@ -181,8 +181,8 @@ int ntpq_queryhost(unsigned short VARSET, unsigned short association, char *resu { const char *datap; int res; - int dsize; - u_short rstatus; + size_t dsize; + u_short rstatus; if ( numhosts > 0 ) res = doquery(VARSET,association,0,0, (char *)0, &rstatus, &dsize, &datap); @@ -417,7 +417,7 @@ ntpq_read_assoc_peervars( { const char * datap; int res; - int dsize; + size_t dsize; u_short rstatus; res = doquery(CTL_OP_READVAR, associd, 0, 0, NULL, &rstatus, @@ -474,24 +474,22 @@ ntpq_read_sysvars( { const char * datap; int res; - int i_dsize; size_t dsize; u_short rstatus; res = doquery(CTL_OP_READVAR, 0, 0, 0, NULL, &rstatus, - &i_dsize, &datap); + &dsize, &datap); if (res != 0) return 0; - if (i_dsize == 0) { + if (dsize == 0) { if (numhosts > 1) fprintf(stderr, "server=%s ", currenthost); fprintf(stderr, "***No sysvar information returned\n"); return 0; } else { - dsize = max(0, i_dsize); dsize = min(dsize, maxsize); memcpy(resultbuf, datap, dsize); } @@ -661,7 +659,7 @@ ntpq_read_assoc_clockvars( { const char *datap; int res; - int dsize; + size_t dsize; u_short rstatus; res = ntpq_doquerylist(ntpq_varlist, CTL_OP_READCLOCK, associd, diff --git a/ntpq/libntpq.h b/ntpq/libntpq.h index 84a622bba..74caf27cd 100644 --- a/ntpq/libntpq.h +++ b/ntpq/libntpq.h @@ -106,4 +106,4 @@ extern int ntpq_read_assoc_clockvars( associd_t associd, char *resultbuf, int ma extern int ntpq_dogetassoc(void); extern char ntpq_decodeaddrtype(sockaddr_u *sock); extern int ntpq_doquerylist(struct ntpq_varlist *, int, associd_t, int, - u_short *, int *, const char **datap); + u_short *, size_t *, const char **datap); diff --git a/ntpq/libntpq_subs.c b/ntpq/libntpq_subs.c index e53b4193c..b232065f7 100644 --- a/ntpq/libntpq_subs.c +++ b/ntpq/libntpq_subs.c @@ -42,7 +42,7 @@ ntpq_doquerylist( associd_t associd, int auth, u_short *rstatus, - int *dsize, + size_t *dsize, const char **datap ) { diff --git a/ntpq/ntpq-subs.c b/ntpq/ntpq-subs.c index 78143b351..3ce9c1cc2 100644 --- a/ntpq/ntpq-subs.c +++ b/ntpq/ntpq-subs.c @@ -22,9 +22,9 @@ static struct varlist *findlistvar (struct varlist *, char *); static void doaddvlist (struct varlist *, const char *); static void dormvlist (struct varlist *, const char *); static void doclearvlist (struct varlist *); -static void makequerydata (struct varlist *, int *, char *); +static void makequerydata (struct varlist *, size_t *, char *); static int doquerylist (struct varlist *, int, associd_t, int, - u_short *, int *, const char **); + u_short *, size_t *, const char **); static void doprintvlist (struct varlist *, FILE *); static void addvars (struct parse *, FILE *); static void rmvars (struct parse *, FILE *); @@ -56,7 +56,7 @@ static void authinfo (struct parse *, FILE *); static void pstats (struct parse *, FILE *); static long when (l_fp *, l_fp *, l_fp *); static char * prettyinterval (char *, size_t, long); -static int doprintpeers (struct varlist *, int, int, int, const char *, FILE *, int); +static int doprintpeers (struct varlist *, int, int, size_t, const char *, FILE *, int); static int dogetpeers (struct varlist *, associd_t, FILE *, int); static void dopeers (int, FILE *, int); static void peers (struct parse *, FILE *); @@ -440,7 +440,7 @@ doaddvlist( ) { struct varlist *vl; - int len; + size_t len; char *name; char *value; @@ -475,7 +475,7 @@ dormvlist( ) { struct varlist *vl; - int len; + size_t len; char *name; char *value; @@ -527,14 +527,14 @@ doclearvlist( static void makequerydata( struct varlist *vlist, - int *datalen, + size_t *datalen, char *data ) { register struct varlist *vl; register char *cp, *cpend; - register int namelen, valuelen; - register int totallen; + register size_t namelen, valuelen; + register size_t totallen; cp = data; cpend = data + *datalen; @@ -563,7 +563,7 @@ makequerydata( cp += valuelen; } } - *datalen = cp - data; + *datalen = (size_t)(cp - data); } @@ -577,12 +577,12 @@ doquerylist( associd_t associd, int auth, u_short *rstatus, - int *dsize, + size_t *dsize, const char **datap ) { char data[CTL_MAX_DATA_LEN]; - int datalen; + size_t datalen; datalen = sizeof(data); makequerydata(vlist, &datalen, data); @@ -686,7 +686,7 @@ dolist( { const char *datap; int res; - int dsize; + size_t dsize; u_short rstatus; int quiet; @@ -766,7 +766,7 @@ writelist( const char *datap; int res; associd_t associd; - int dsize; + size_t dsize; u_short rstatus; if (pcmd->nargs == 0) { @@ -808,8 +808,8 @@ readvar( ) { associd_t associd; - u_int tmpcount; - u_int u; + size_t tmpcount; + size_t u; int type; struct varlist tmplist[MAXLIST]; @@ -849,7 +849,7 @@ writevar( int res; associd_t associd; int type; - int dsize; + size_t dsize; u_short rstatus; struct varlist tmplist[MAXLIST]; @@ -1071,7 +1071,7 @@ dogetassoc( const char *datap; const u_short *pus; int res; - int dsize; + size_t dsize; u_short rstatus; res = doquery(CTL_OP_READSTAT, 0, 0, 0, (char *)0, &rstatus, @@ -1091,7 +1091,7 @@ dogetassoc( if (numhosts > 1) fprintf(stderr, "server=%s ", currenthost); fprintf(stderr, - "***Server returned %d octets, should be multiple of 4\n", + "***Server returned %zu octets, should be multiple of 4\n", dsize); return 0; } @@ -1379,7 +1379,7 @@ saveconfig( { const char *datap; int res; - int dsize; + size_t dsize; u_short rstatus; if (0 == pcmd->nargs) @@ -1396,7 +1396,7 @@ saveconfig( if (0 == dsize) fprintf(fp, "(no response message, curiously)"); else - fprintf(fp, "%.*s", dsize, datap); + fprintf(fp, "%.*s", (int)dsize, datap); /* cast is wobbly */ } @@ -1593,7 +1593,7 @@ doprintpeers( struct varlist *pvl, int associd, int rstatus, - int datalen, + size_t datalen, const char *data, FILE *fp, int af @@ -1602,7 +1602,7 @@ doprintpeers( char *name; char *value = NULL; int c; - int len; + size_t len; int have_srchost; int have_dstadr; int have_da_rid; @@ -1881,7 +1881,7 @@ dogetpeers( { const char *datap; int res; - int dsize; + size_t dsize; u_short rstatus; #ifdef notdef @@ -2186,7 +2186,7 @@ config ( { const char *cfgcmd; u_short rstatus; - int rsize; + size_t rsize; const char *rdata; char *resp; int res; @@ -2201,7 +2201,8 @@ config ( "Keyword = %s\n" "Command = %s\n", pcmd->keyword, cfgcmd); - res = doquery(CTL_OP_CONFIGURE, 0, 1, strlen(cfgcmd), cfgcmd, + res = doquery(CTL_OP_CONFIGURE, 0, 1, + strlen(cfgcmd), cfgcmd, &rstatus, &rsize, &rdata); if (res != 0) @@ -2251,7 +2252,7 @@ config_from_file ( ) { u_short rstatus; - int rsize; + size_t rsize; const char *rdata; int res; FILE *config_fd; @@ -2302,7 +2303,7 @@ config_from_file ( rsize--; if (rsize > 0 && '\r' == rdata[rsize - 1]) rsize--; - printf("Line No: %d %.*s: %s", i, rsize, rdata, + printf("Line No: %d %.*s: %s", i, (int)rsize, rdata, /* cast is wobbly */ config_cmd); } printf("Done sending file\n"); @@ -2319,9 +2320,9 @@ fetch_nonce( const char nonce_eq[] = "nonce="; int qres; u_short rstatus; - int rsize; + size_t rsize; const char * rdata; - int chars; + size_t chars; /* * Retrieve a nonce specific to this client to demonstrate to @@ -2338,7 +2339,7 @@ fetch_nonce( if ((size_t)rsize <= sizeof(nonce_eq) - 1 || strncmp(rdata, nonce_eq, sizeof(nonce_eq) - 1)) { fprintf(stderr, "unexpected nonce response format: %.*s\n", - rsize, rdata); + (int)rsize, rdata); /* cast is wobbly */ return FALSE; } chars = rsize - (sizeof(nonce_eq) - 1); @@ -2449,10 +2450,10 @@ collect_mru_list( char req_buf[CTL_MAX_DATA_LEN]; char *req; char *req_end; - int chars; + size_t chars; int qres; u_short rstatus; - int rsize; + size_t rsize; const char *rdata; int limit; int frags; @@ -2512,8 +2513,9 @@ collect_mru_list( if (debug) fprintf(stderr, "READ_MRU parms: %s\n", req_buf); - qres = doqueryex(CTL_OP_READ_MRU, 0, 0, strlen(req_buf), - req_buf, &rstatus, &rsize, &rdata, TRUE); + qres = doqueryex(CTL_OP_READ_MRU, 0, 0, + strlen(req_buf), req_buf, + &rstatus, &rsize, &rdata, TRUE); if (CERR_UNKNOWNVAR == qres && ri > 0) { /* @@ -3317,7 +3319,7 @@ ifstats( const char up_fmt[] = "up.%u"; /* uptime */ const char * datap; int qres; - int dsize; + size_t dsize; u_short rstatus; char * tag; char * val; @@ -3533,7 +3535,7 @@ reslist( const int qdata_chars = COUNTOF(qdata) - 1; const char * datap; int qres; - int dsize; + size_t dsize; u_short rstatus; char * tag; char * val; @@ -3632,7 +3634,7 @@ collect_display_vdc( char tagbuf[32]; vdc *pvdc; u_short rstatus; - int rsize; + size_t rsize; const char *rdata; int qres; char *tag; diff --git a/ntpq/ntpq.c b/ntpq/ntpq.c index c8d5eced8..288e5d003 100644 --- a/ntpq/ntpq.c +++ b/ntpq/ntpq.c @@ -39,6 +39,7 @@ #include "ntp_libopts.h" #include "ntpq-opts.h" +#include "safecast.h" #ifdef SYS_VXWORKS /* vxWorks needs mode flag -casey*/ # define open(name, flags) open(name, flags, 0777) @@ -168,8 +169,8 @@ int ntpqmain (int, char **); static int openhost (const char *, int); static void dump_hex_printable(const void *, size_t); static int sendpkt (void *, size_t); -static int getresponse (int, int, u_short *, int *, const char **, int); -static int sendrequest (int, associd_t, int, int, const char *); +static int getresponse (int, int, u_short *, size_t *, const char **, int); +static int sendrequest (int, associd_t, int, size_t, const char *); static char * tstflags (u_long); #ifndef BUILD_AS_LIB static void getcmds (void); @@ -208,8 +209,8 @@ static void error (const char *, ...) __attribute__((__format__(__printf__, 1, 2))); static u_long getkeyid (const char *); static void atoascii (const char *, size_t, char *, size_t); -static void cookedprint (int, int, const char *, int, int, FILE *); -static void rawprint (int, int, const char *, int, int, FILE *); +static void cookedprint (int, size_t, const char *, int, int, FILE *); +static void rawprint (int, size_t, const char *, int, int, FILE *); static void startoutput (void); static void output (FILE *, const char *, const char *); static void endoutput (FILE *); @@ -739,9 +740,9 @@ openhost( sizeof(hostaddr)) == -1) #else (connect(sockfd, (struct sockaddr *)ai->ai_addr, - ai->ai_addrlen) == -1) + ai->ai_addrlen) == -1) #endif /* SYS_VXWORKS */ - { + { error("connect"); freeaddrinfo(ai); return 0; @@ -802,7 +803,7 @@ sendpkt( if (debug >= 3) printf("Sending %zu octets\n", xdatalen); - if (send(sockfd, xdata, (size_t)xdatalen, 0) == -1) { + if (send(sockfd, xdata, xdatalen, 0) == -1) { warning("write to %s failed", currenthost); return -1; } @@ -822,7 +823,7 @@ getresponse( int opcode, int associd, u_short *rstatus, - int *rsize, + size_t *rsize, const char **rdata, int timeo ) @@ -871,8 +872,7 @@ getresponse( tvo = tvsout; FD_SET(sockfd, &fds); - n = select(sockfd + 1, &fds, NULL, NULL, &tvo); - + n = select(sockfd+1, &fds, NULL, NULL, &tvo); if (n == -1) { warning("select fails"); return -1; @@ -1171,22 +1171,22 @@ sendrequest( int opcode, associd_t associd, int auth, - int qsize, + size_t qsize, const char *qdata ) { struct ntp_control qpkt; - int pktsize; + size_t pktsize; u_long key_id; char * pass; - int maclen; + size_t maclen; /* * Check to make sure the data will fit in one packet */ if (qsize > CTL_MAX_DATA_LEN) { fprintf(stderr, - "***Internal error! qsize (%d) too large\n", + "***Internal error! qsize (%zu) too large\n", qsize); return 1; } @@ -1265,7 +1265,7 @@ sendrequest( return 1; } else if ((size_t)maclen != (info_auth_hashlen + sizeof(keyid_t))) { fprintf(stderr, - "%d octet MAC, %zu expected with %zu octet digest\n", + "%zu octet MAC, %zu expected with %zu octet digest\n", maclen, (info_auth_hashlen + sizeof(keyid_t)), info_auth_hashlen); return 1; @@ -1355,10 +1355,10 @@ doquery( int opcode, associd_t associd, int auth, - int qsize, + size_t qsize, const char *qdata, u_short *rstatus, - int *rsize, + size_t *rsize, const char **rdata ) { @@ -1376,10 +1376,10 @@ doqueryex( int opcode, associd_t associd, int auth, - int qsize, + size_t qsize, const char *qdata, u_short *rstatus, - int *rsize, + size_t *rsize, const char **rdata, int quiet ) @@ -1743,7 +1743,7 @@ findcmd( ) { struct xcmd *cl; - int clen; + size_t clen; int nmatch; struct xcmd *nearmatch = NULL; struct xcmd *clist; @@ -2800,7 +2800,7 @@ do { \ */ void makeascii( - int length, + size_t length, const char *data, FILE *fp ) @@ -2916,7 +2916,7 @@ int nextcb = 0; */ int nextvar( - int *datalen, + size_t *datalen, const char **datap, char **vname, char **vvalue @@ -2963,7 +2963,7 @@ nextvar( if (cp < cpend) cp++; *datap = cp; - *datalen = cpend - cp; + *datalen = size2int_sat(cpend - cp); *vvalue = NULL; return 1; } @@ -3003,7 +3003,7 @@ nextvar( if (np < cpend && ',' == *np) np++; *datap = np; - *datalen = cpend - np; + *datalen = size2int_sat(cpend - np); *vvalue = value; return 1; } @@ -3027,7 +3027,7 @@ varfmt(const char * varname) */ void printvars( - int length, + size_t length, const char *data, int status, int sttype, @@ -3048,7 +3048,7 @@ printvars( static void rawprint( int datatype, - int length, + size_t length, const char *data, int status, int quiet, @@ -3113,10 +3113,10 @@ output( const char *value ) { - size_t len; + int len; /* strlen of "name=value" */ - len = strlen(name) + 1 + strlen(value); + len = size2int_sat(strlen(name) + 1 + strlen(value)); if (out_chars != 0) { out_chars += 2; @@ -3161,10 +3161,10 @@ outputarr( l_fp *lfp ) { - register char *bp; - register char *cp; - register int i; - register int len; + char *bp; + char *cp; + size_t i; + size_t len; char buf[256]; bp = buf; @@ -3246,7 +3246,7 @@ tstflags( static void cookedprint( int datatype, - int length, + size_t length, const char *data, int status, int quiet, @@ -3430,7 +3430,7 @@ grow_assoc_cache(void) } assoc_cache = erealloc_zero(assoc_cache, new_sz, prior_sz); prior_sz = new_sz; - assoc_cache_slots = new_sz / sizeof(assoc_cache[0]); + assoc_cache_slots = (u_int)(new_sz / sizeof(assoc_cache[0])); } diff --git a/ntpq/ntpq.h b/ntpq/ntpq.h index 2575b885c..171b80768 100644 --- a/ntpq/ntpq.h +++ b/ntpq/ntpq.h @@ -136,19 +136,19 @@ extern int getnetnum (const char *, sockaddr_u *, char *, int); extern void sortassoc (void); extern void show_error_msg (int, associd_t); extern int dogetassoc (FILE *); -extern int doquery (int, associd_t, int, int, const char *, - u_short *, int *, const char **); -extern int doqueryex (int, associd_t, int, int, const char *, - u_short *, int *, const char **, int); +extern int doquery (int, associd_t, int, size_t, const char *, + u_short *, size_t *, const char **); +extern int doqueryex (int, associd_t, int, size_t, const char *, + u_short *, size_t *, const char **, int); extern const char * nntohost (sockaddr_u *); extern const char * nntohost_col (sockaddr_u *, size_t, int); extern const char * nntohostp (sockaddr_u *); extern int decodets (char *, l_fp *); extern int decodeuint (char *, u_long *); -extern int nextvar (int *, const char **, char **, char **); +extern int nextvar (size_t *, const char **, char **, char **); extern int decodetime (char *, l_fp *); -extern void printvars (int, const char *, int, int, int, FILE *); +extern void printvars (size_t, const char *, int, int, int, FILE *); extern int decodeint (char *, long *); -extern void makeascii (int, const char *, FILE *); +extern void makeascii (size_t, const char *, FILE *); extern const char * trunc_left (const char *, size_t); extern const char * trunc_right(const char *, size_t); diff --git a/ports/winnt/include/config.h b/ports/winnt/include/config.h index e313272fd..363e107e2 100644 --- a/ports/winnt/include/config.h +++ b/ports/winnt/include/config.h @@ -159,7 +159,7 @@ struct timeval { * Unix and implemented in the Windows port similarly to * refclock_open(). */ -extern int tty_open(char *, int, int); +extern int tty_open(const char *, int, int); /* * disable use of __declspec(dllexport) by libisc routines diff --git a/ports/winnt/include/ntp_iocompletionport.h b/ports/winnt/include/ntp_iocompletionport.h index 7d7ff7c4b..7bc2e04a9 100644 --- a/ports/winnt/include/ntp_iocompletionport.h +++ b/ports/winnt/include/ntp_iocompletionport.h @@ -16,7 +16,7 @@ extern int io_completion_port_add_socket(SOCKET fd, struct interface *); struct refclockio; /* in ntp_refclock.h but inclusion here triggers problems */ extern int io_completion_port_add_clock_io(struct refclockio *rio); extern void io_completion_port_remove_clock_io(struct refclockio *rio); -extern int io_completion_port_sendto(int, void *, size_t, sockaddr_u *); +extern int io_completion_port_sendto(SOCKET, void *, size_t, sockaddr_u *); extern int GetReceivedBuffers(void); diff --git a/ports/winnt/instsrv/instsrv.c b/ports/winnt/instsrv/instsrv.c index b3acc9f39..549db9c97 100644 --- a/ports/winnt/instsrv/instsrv.c +++ b/ports/winnt/instsrv/instsrv.c @@ -240,12 +240,12 @@ int addSourceToRegistry(LPSTR pszAppname, LPSTR pszMsgDLL) } /* Add the Event-ID message-file name to the subkey. */ - bSuccess = RegSetValueEx(hk, /* subkey handle */ - "EventMessageFile", /* value name */ - 0, /* must be zero */ - REG_EXPAND_SZ, /* value type */ - (LPBYTE) pszMsgDLL, /* address of value data */ - strlen(pszMsgDLL) + 1); /* length of value data */ + bSuccess = RegSetValueEx(hk, /* subkey handle */ + "EventMessageFile", /* value name */ + 0, /* must be zero */ + REG_EXPAND_SZ, /* value type */ + (LPBYTE) pszMsgDLL, /* address of value data */ + (DWORD)(strlen(pszMsgDLL) + 1)); /* length of value data */ if(bSuccess != ERROR_SUCCESS) { PERR("RegSetValueEx"); diff --git a/ports/winnt/libntp/termios.c b/ports/winnt/libntp/termios.c index 4ee89899b..bf8898131 100644 --- a/ports/winnt/libntp/termios.c +++ b/ports/winnt/libntp/termios.c @@ -27,17 +27,18 @@ size_t c_hnds; /* current array size */ * work by duplicating the handle for the 2nd open, allowing * refclock_atom to share a GPS refclock's comm port. */ -HANDLE common_serial_open( - char * dev, - char ** pwindev +HANDLE +common_serial_open( + const char * dev, + char ** pwindev ) { - char * windev; - HANDLE handle; - size_t unit; - size_t prev_c_hnds; - size_t opens; - char * pch; + char * windev; + HANDLE handle; + size_t unit; + size_t prev_c_hnds; + size_t opens; + const char * pch; /* * This is odd, but we'll take any unix device path @@ -206,7 +207,7 @@ int isserialhandle( * file descriptor if success and -1 if failure. */ int tty_open( - char *dev, /* device name pointer */ + const char *dev, /* device name pointer */ int access, /* O_RDWR */ int mode /* unused */ ) @@ -229,7 +230,7 @@ int tty_open( return -1; } - return (int)_open_osfhandle((int)Handle, _O_TEXT); + return (int)_open_osfhandle((intptr_t)Handle, _O_TEXT); } @@ -239,10 +240,11 @@ int tty_open( * This routine opens a serial port for I/O and sets default options. It * returns the file descriptor or -1 indicating failure. */ -int refclock_open( - char * dev, /* device name pointer */ - u_int speed, /* serial port speed (code) */ - u_int flags /* line discipline flags */ +int +refclock_open( + const char * dev, /* device name pointer */ + u_int speed, /* serial port speed (code) */ + u_int flags /* line discipline flags */ ) { char * windev; @@ -397,7 +399,7 @@ int refclock_open( translate = (LDISC_RAW & flags) ? 0 : _O_TEXT; - fd = _open_osfhandle((int)h, translate); + fd = _open_osfhandle((intptr_t)h, translate); /* refclock_open() long returned 0 on failure, avoid it. */ if (0 == fd) { fd = _dup(0); diff --git a/ports/winnt/ntpd/ntp_iocompletionport.c b/ports/winnt/ntpd/ntp_iocompletionport.c index 621852af0..a14b081ad 100644 --- a/ports/winnt/ntpd/ntp_iocompletionport.c +++ b/ports/winnt/ntpd/ntp_iocompletionport.c @@ -59,6 +59,7 @@ Juergen Perlinger (perlinger@ntp.org) Feb 2012 #include #include #include +#include #include "ntpd.h" #include "ntp_machine.h" @@ -1514,7 +1515,7 @@ io_completion_port_add_socket( */ int io_completion_port_sendto( - int fd, + SOCKET fd, void * pkt, size_t len, sockaddr_u * dest @@ -1527,8 +1528,10 @@ io_completion_port_sendto( int errval; int AddrLen; + if (len > INT_MAX) + len = INT_MAX; wsabuf.buf = (void *)pkt; - wsabuf.len = len; + wsabuf.len = (DWORD)len; AddrLen = SOCKLEN(dest); octets_sent = 0; @@ -1558,7 +1561,7 @@ io_completion_port_sendto( return -1; } - if (len != (int)octets_sent) { + if ((DWORD)len != octets_sent) { msyslog(LOG_ERR, "WSASendTo(%s) sent %u of %d octets", stoa(dest), octets_sent, len); SetLastError(ERROR_BAD_LENGTH); @@ -1567,7 +1570,7 @@ io_completion_port_sendto( DPRINTF(4, ("sendto %s %d octets\n", stoa(dest), len)); - return len; + return (int)len; } @@ -1632,7 +1635,7 @@ GetReceivedBuffers() return (full_recvbuffs()); /* get received buffers */ } -#else +#else /*defined(HAVE_IO_COMPLETION_PORT) */ static int NonEmptyCompilationUnit; -#endif +#endif /*!defined(HAVE_IO_COMPLETION_PORT) */ diff --git a/ports/winnt/vs2008/common.vsprops b/ports/winnt/vs2008/common.vsprops index 53edd64ab..dc4a6333b 100644 --- a/ports/winnt/vs2008/common.vsprops +++ b/ports/winnt/vs2008/common.vsprops @@ -24,7 +24,7 @@ SuppressStartupBanner="true" DebugInformationFormat="3" CompileAs="1" - DisableSpecificWarnings="4996" + DisableSpecificWarnings="4996;4267;4244" /> @@ -122,7 +123,7 @@ /> @@ -193,7 +193,7 @@ /> - - @@ -492,6 +488,10 @@ RelativePath="..\..\..\..\include\mbg_gps166.h" > + + @@ -595,7 +595,7 @@ /> + + + + + + + + + + + + true ProgramDatabase CompileAsC - 4996;%(DisableSpecificWarnings) + 4996;4267;4244;%(DisableSpecificWarnings) Level3 diff --git a/ports/winnt/vs2013/libntp/libntp.vcxproj b/ports/winnt/vs2013/libntp/libntp.vcxproj index fcf03b013..158e9f1f2 100644 --- a/ports/winnt/vs2013/libntp/libntp.vcxproj +++ b/ports/winnt/vs2013/libntp/libntp.vcxproj @@ -352,6 +352,7 @@ + diff --git a/ports/winnt/vs2013/libntp/libntp.vcxproj.filters b/ports/winnt/vs2013/libntp/libntp.vcxproj.filters index 36fe23d89..6cba2702c 100644 --- a/ports/winnt/vs2013/libntp/libntp.vcxproj.filters +++ b/ports/winnt/vs2013/libntp/libntp.vcxproj.filters @@ -556,6 +556,9 @@ Header Files + + Header Files + diff --git a/ports/winnt/vs2013/ntpd/ntpd.vcxproj b/ports/winnt/vs2013/ntpd/ntpd.vcxproj index 5bc708210..6ee591b46 100644 --- a/ports/winnt/vs2013/ntpd/ntpd.vcxproj +++ b/ports/winnt/vs2013/ntpd/ntpd.vcxproj @@ -285,7 +285,13 @@ - + + 4307;%(DisableSpecificWarnings) + 4307;%(DisableSpecificWarnings) + 4307;%(DisableSpecificWarnings) + 4307;%(DisableSpecificWarnings) + 4307;%(DisableSpecificWarnings) + diff --git a/sntp/networking.c b/sntp/networking.c index ddd45efe3..6a176c57f 100644 --- a/sntp/networking.c +++ b/sntp/networking.c @@ -136,7 +136,7 @@ process_pkt ( return PACKET_UNUSEABLE; } /* Note: pkt_len must be a multiple of 4 at this point! */ - packet_end = (u_int32*)((char*)rpkt + pkt_len); + packet_end = (void*)((char*)rpkt + pkt_len); exten_end = skip_efields(rpkt->exten, packet_end); if (NULL == exten_end) { msyslog(LOG_ERR, diff --git a/tests/libntp/authkeys.c b/tests/libntp/authkeys.c index 6a10c01c5..596122e3d 100644 --- a/tests/libntp/authkeys.c +++ b/tests/libntp/authkeys.c @@ -121,7 +121,7 @@ test_AddWithAuthUseKey(void) { const keyid_t KEYNO = 5; const char* KEY = "52a"; - TEST_ASSERT_TRUE(authusekey(KEYNO, KEYTYPE, (u_char*)KEY)); + TEST_ASSERT_TRUE(authusekey(KEYNO, KEYTYPE, (const u_char*)KEY)); } void diff --git a/tests/ntpd/ntp_restrict.c b/tests/ntpd/ntp_restrict.c index 98d6e8309..08d236e24 100644 --- a/tests/ntpd/ntp_restrict.c +++ b/tests/ntpd/ntp_restrict.c @@ -26,6 +26,7 @@ setUp(void) { } +void tearDown(void) { restrict_u *empty_restrict = malloc(sizeof(restrict_u)); memset(empty_restrict, 0, sizeof(restrict_u)); diff --git a/tests/ntpd/run-ntp_restrict.c b/tests/ntpd/run-ntp_restrict.c index 0d945eb33..d88446207 100644 --- a/tests/ntpd/run-ntp_restrict.c +++ b/tests/ntpd/run-ntp_restrict.c @@ -55,14 +55,14 @@ int main(int argc, char *argv[]) { progname = argv[0]; UnityBegin("ntp_restrict.c"); - RUN_TEST(test_RestrictionsAreEmptyAfterInit, 59); - RUN_TEST(test_ReturnsCorrectDefaultRestrictions, 85); - RUN_TEST(test_HackingDefaultRestriction, 96); - RUN_TEST(test_CantRemoveDefaultEntry, 119); - RUN_TEST(test_AddingNewRestriction, 130); - RUN_TEST(test_TheMostFittingRestrictionIsMatched, 143); - RUN_TEST(test_DeletedRestrictionIsNotMatched, 165); - RUN_TEST(test_RestrictUnflagWorks, 189); + RUN_TEST(test_RestrictionsAreEmptyAfterInit, 60); + RUN_TEST(test_ReturnsCorrectDefaultRestrictions, 86); + RUN_TEST(test_HackingDefaultRestriction, 97); + RUN_TEST(test_CantRemoveDefaultEntry, 120); + RUN_TEST(test_AddingNewRestriction, 131); + RUN_TEST(test_TheMostFittingRestrictionIsMatched, 144); + RUN_TEST(test_DeletedRestrictionIsNotMatched, 166); + RUN_TEST(test_RestrictUnflagWorks, 190); return (UnityEnd()); } diff --git a/tests/ntpd/run-t-ntp_signd.c b/tests/ntpd/run-t-ntp_signd.c index 662cada0b..8c5f23a66 100644 --- a/tests/ntpd/run-t-ntp_signd.c +++ b/tests/ntpd/run-t-ntp_signd.c @@ -36,7 +36,7 @@ extern void test_connect_correct_socket(void); extern void test_write_all(void); extern void test_send_packet(void); extern void test_recv_packet(void); -extern void test_send_via_ntp_signd(); +extern void test_send_via_ntp_signd(void); //=======Test Reset Option===== @@ -55,12 +55,12 @@ int main(int argc, char *argv[]) { progname = argv[0]; UnityBegin("t-ntp_signd.c"); - RUN_TEST(test_connect_incorrect_socket, 49); - RUN_TEST(test_connect_correct_socket, 54); - RUN_TEST(test_write_all, 74); - RUN_TEST(test_send_packet, 84); - RUN_TEST(test_recv_packet, 93); - RUN_TEST(test_send_via_ntp_signd, 104); + RUN_TEST(test_connect_incorrect_socket, 48); + RUN_TEST(test_connect_correct_socket, 49); + RUN_TEST(test_write_all, 50); + RUN_TEST(test_send_packet, 51); + RUN_TEST(test_recv_packet, 52); + RUN_TEST(test_send_via_ntp_signd, 53); return (UnityEnd()); } diff --git a/tests/ntpd/t-ntp_scanner.c b/tests/ntpd/t-ntp_scanner.c index bf6794d4c..862a2ee2b 100644 --- a/tests/ntpd/t-ntp_scanner.c +++ b/tests/ntpd/t-ntp_scanner.c @@ -26,13 +26,13 @@ void test_InitializeLexStack(void); void test_keywordIncorrectToken(void){ - char * temp = keyword(999); + const char * temp = keyword(999); //printf("%s\n",temp); TEST_ASSERT_EQUAL_STRING("(keyword not found)",temp); } void test_keywordServerToken(void){ - char * temp = keyword(T_Server); + const char * temp = keyword(T_Server); //printf("%s",temp); //143 or 401 ? TEST_ASSERT_EQUAL_STRING("server",temp); } @@ -127,7 +127,7 @@ void test_EOC(void){ temp = is_EOC(';'); TEST_ASSERT_TRUE(temp); } - temp = is_EOC("A"); + temp = is_EOC('A'); TEST_ASSERT_FALSE(temp); temp = is_EOC('1'); TEST_ASSERT_FALSE(temp); diff --git a/tests/ntpd/t-ntp_signd.c b/tests/ntpd/t-ntp_signd.c index 45972fb97..180d28cab 100644 --- a/tests/ntpd/t-ntp_signd.c +++ b/tests/ntpd/t-ntp_signd.c @@ -39,22 +39,29 @@ ssize_t read(int fd, void * buf, size_t len){ //END OF MOCKED FUNCTIONS -int isGE(int a,int b){ +static int +isGE(int a,int b){ if(a >= b) {return 1;} else {return 0;} } +extern void test_connect_incorrect_socket(void); +extern void test_connect_correct_socket(void); +extern void test_write_all(void); +extern void test_send_packet(void); +extern void test_recv_packet(void); +extern void test_send_via_ntp_signd(void); + void -test_connect_incorrect_socket(void){ +test_connect_incorrect_socket(void) +{ TEST_ASSERT_EQUAL(-1, ux_socket_connect(NULL)); } void -test_connect_correct_socket(void){ - - - +test_connect_correct_socket(void) +{ int temp = ux_socket_connect("/socket"); //risky, what if something is listening on :123, or localhost isnt 127.0.0.1? @@ -71,7 +78,8 @@ test_connect_correct_socket(void){ void -test_write_all(void){ +test_write_all(void) +{ int fd = ux_socket_connect("/socket"); TEST_ASSERT_TRUE(isGE(fd,0)); char * str = "TEST123"; @@ -81,7 +89,8 @@ test_write_all(void){ void -test_send_packet(void){ +test_send_packet(void) +{ int fd = ux_socket_connect("/socket"); char * str2 = "PACKET12345"; int temp = send_packet(fd, str2, strlen(str2)); @@ -90,19 +99,21 @@ test_send_packet(void){ void -test_recv_packet(void){ +test_recv_packet(void) +{ int fd = ux_socket_connect("/socket"); - int size = 256; - char str[size]; + uint32_t size = 256; + char *str = NULL; int temp = recv_packet(fd, &str, &size); send_packet(fd, str, strlen(str)); + free(str); TEST_ASSERT_EQUAL(0,temp); //0 because nobody sent us anything (yet!) } void -test_send_via_ntp_signd(){ - +test_send_via_ntp_signd(void) +{ struct recvbuf *rbufp = (struct recvbuf *) malloc(sizeof(struct recvbuf)); int xmode = 1; keyid_t xkeyid = 12345; diff --git a/tests/sandbox/run-uglydate.c b/tests/sandbox/run-uglydate.c index e65cd0109..be0a768fe 100644 --- a/tests/sandbox/run-uglydate.c +++ b/tests/sandbox/run-uglydate.c @@ -47,7 +47,7 @@ int main(int argc, char *argv[]) { progname = argv[0]; UnityBegin("uglydate.c"); - RUN_TEST(test_ConstantDateTime, 9); + RUN_TEST(test_ConstantDateTime, 8); return (UnityEnd()); } diff --git a/tests/sandbox/uglydate.c b/tests/sandbox/uglydate.c index 5bc639ece..519bddca6 100644 --- a/tests/sandbox/uglydate.c +++ b/tests/sandbox/uglydate.c @@ -5,8 +5,11 @@ //#include "ntp_stdlib.h" //#include "libntptest.h" +extern void test_ConstantDateTime(void); + void -test_ConstantDateTime(void) { +test_ConstantDateTime(void) +{ const u_int32 HALF = 2147483648UL; l_fp e_time = {{3485080800UL}, HALF}; // 2010-06-09 14:00:00.5 diff --git a/tests/sec-2853/sec-2853.c b/tests/sec-2853/sec-2853.c index fd89c5b82..f9255b08c 100644 --- a/tests/sec-2853/sec-2853.c +++ b/tests/sec-2853/sec-2853.c @@ -59,9 +59,9 @@ int basic_good( void ) failed = ( 4 != len ); if ( failed || verbose ) - printf( "remoteconfig_cmdlength(\"%s\") returned %d, expected %d: %s\n", + printf( "remoteconfig_cmdlength(\"%s\") returned %llu, expected %u: %s\n", string, - len, + (unsigned long long)len, 4, failed ? "NO <<" : "yes" ); @@ -83,9 +83,9 @@ int embedded_nul( void ) failed = ( 3 != len ); if ( failed || verbose ) - printf( "remoteconfig_cmdlength(\"%s\") returned %d, expected %d: %s\n", + printf( "remoteconfig_cmdlength(\"%s\") returned %llu, expected %u: %s\n", string, - len, + (unsigned long long)len, 3, failed ? "NO <<" : "yes" ); @@ -107,9 +107,9 @@ int trailing_space( void ) failed = ( 14 != len ); if ( failed || verbose ) - printf( "remoteconfig_cmdlength(\"%s\") returned %d, expected %d: %s\n", + printf( "remoteconfig_cmdlength(\"%s\") returned %llu, expected %u: %s\n", string, - len, + (unsigned long long)len, 14, failed ? "NO <<" : "yes" ); diff --git a/util/ntp-keygen.c b/util/ntp-keygen.c index 9568adc8d..ab34927cd 100644 --- a/util/ntp-keygen.c +++ b/util/ntp-keygen.c @@ -187,7 +187,7 @@ readlink( int len ) { - return strlen(file); + return (int)strlen(file); /* assume no overflow possible */ } /* @@ -1957,10 +1957,10 @@ x509 ( X509_time_adj(X509_get_notAfter(cert), lifetime * SECSPERDAY, &epoch); subj = X509_get_subject_name(cert); X509_NAME_add_entry_by_txt(subj, "commonName", MBSTRING_ASC, - (u_char *)name, strlen(name), -1, 0); + (u_char *)name, -1, -1, 0); subj = X509_get_issuer_name(cert); X509_NAME_add_entry_by_txt(subj, "commonName", MBSTRING_ASC, - (u_char *)name, strlen(name), -1, 0); + (u_char *)name, -1, -1, 0); if (!X509_set_pubkey(cert, pkey)) { fprintf(stderr, "Assign certificate signing key fails\n%s\n", ERR_error_string(ERR_get_error(), NULL));