]> git.ipfire.org Git - thirdparty/ntp.git/commitdiff
[Bug 2962] truncation of size_t/ptrdiff_t on 64bit targets
authorJuergen Perlinger <perlinger@ntp.org>
Fri, 13 Nov 2015 21:54:35 +0000 (22:54 +0100)
committerJuergen Perlinger <perlinger@ntp.org>
Fri, 13 Nov 2015 21:54:35 +0000 (22:54 +0100)
 - 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

86 files changed:
ChangeLog
include/Makefile.am
include/ntp_refclock.h
include/ntp_stdlib.h
include/ntpd.h
include/safecast.h [new file with mode: 0644]
lib/isc/backtrace.c
lib/isc/buffer.c
lib/isc/inet_aton.c
lib/isc/inet_pton.c
lib/isc/log.c
lib/isc/netaddr.c
lib/isc/sockaddr.c
lib/isc/task.c
lib/isc/win32/interfaceiter.c
lib/isc/win32/net.c
libntp/a_md5encrypt.c
libntp/atolfp.c
libntp/authkeys.c
libntp/authusekey.c
libntp/dolfptoa.c
libntp/hextolfp.c
libntp/mstolfp.c
libntp/msyslog.c
libntp/ntp_crypto_rnd.c
libntp/ntp_lineedit.c
libntp/ntp_worker.c
libntp/snprintf.c
libparse/clk_computime.c
libparse/clk_dcf7000.c
libparse/clk_hopf6021.c
libparse/clk_meinberg.c
libparse/clk_rawdcf.c
libparse/clk_rcc8000.c
libparse/clk_schmid.c
libparse/clk_trimtaip.c
libparse/clk_varitext.c
libparse/clk_wharton.c
libparse/parse.c
ntpd/ntp_control.c
ntpd/ntp_crypto.c
ntpd/ntp_io.c
ntpd/ntp_loopfilter.c
ntpd/ntp_proto.c
ntpd/ntp_refclock.c
ntpd/ntp_request.c
ntpd/ntp_restrict.c
ntpd/ntp_signd.c
ntpd/ntp_timer.c
ntpd/ntp_util.c
ntpd/refclock_parse.c
ntpd/refclock_shm.c
ntpd/refclock_true.c
ntpd/refclock_tsyncpci.c
ntpdate/ntpdate.c
ntpdc/ntpdc.c
ntpdc/ntpdc.h
ntpdc/ntpdc_ops.c
ntpq/libntpq.c
ntpq/libntpq.h
ntpq/libntpq_subs.c
ntpq/ntpq-subs.c
ntpq/ntpq.c
ntpq/ntpq.h
ports/winnt/include/config.h
ports/winnt/include/ntp_iocompletionport.h
ports/winnt/instsrv/instsrv.c
ports/winnt/libntp/termios.c
ports/winnt/ntpd/ntp_iocompletionport.c
ports/winnt/vs2008/common.vsprops
ports/winnt/vs2008/ntpd/ntpd.vcproj
ports/winnt/vs2013/common.props
ports/winnt/vs2013/libntp/libntp.vcxproj
ports/winnt/vs2013/libntp/libntp.vcxproj.filters
ports/winnt/vs2013/ntpd/ntpd.vcxproj
sntp/networking.c
tests/libntp/authkeys.c
tests/ntpd/ntp_restrict.c
tests/ntpd/run-ntp_restrict.c
tests/ntpd/run-t-ntp_signd.c
tests/ntpd/t-ntp_scanner.c
tests/ntpd/t-ntp_signd.c
tests/sandbox/run-uglydate.c
tests/sandbox/uglydate.c
tests/sec-2853/sec-2853.c
util/ntp-keygen.c

index cafc6ac0ae39c6184717a9a799ba68243f24a73a..7780aafd0fec6a56e08b0c6e24c15c29f5abc375 100644 (file)
--- 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.
 ---
index f032c97e792d7eb60bf0b4a21c8c1b20fcaa25f8..d8b4dd2b54cf5dc8993a021e4ee426b7cc810e58 100644 (file)
@@ -66,6 +66,7 @@ noinst_HEADERS =      \
        recvbuff.h      \
        refclock_atom.h \
        refidsmear.h    \
+       safecast.h      \
        ssl_applink.c   \
        timepps-SCO.h   \
        timepps-Solaris.h       \
index f92d14cdb890c275d2e38bde1fcd491cf045ac61..b264dfaa0d1a7e120b7fad0dea82eaa5ae8e2afe 100644 (file)
@@ -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 *);
index a2e62dabefd9e284e44d70a1ac3df7aba36d3bd6..d735b41f4ba7e511ca673de60a5d2dd2151c1fe3 100644 (file)
@@ -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 *);
 
index 56ec7cae73719c87bbe6a85f417c99536e9a2745..362068c765ed7ca6bc85414fe94fd0e1ebb82300 100644 (file)
@@ -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 (file)
index 0000000..9300463
--- /dev/null
@@ -0,0 +1,34 @@
+#ifndef SAFECAST_H
+#define SAFECAST_H
+
+#include <limits.h>
+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
index 4274da31b463d092442d5d19d398963cb0a502e5..e0425e14f41c78bde53933de3b411ce1305fe993 100644 (file)
@@ -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);
index 1b59e650acdec237559b82f91799a1b264a26465..6a50985c74abc048c5172cc3ec162950d3cd0cb6 100644 (file)
@@ -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
index 14b4887f4f16bbf9dcbff3d875e1ed580ecece4a..3fc3a4db87a58ae14a27d3aaa8c197c655cc5f1c 100644 (file)
@@ -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;
 
index 66b5de0bf4d2895c297ecabb4324f5412ce7c3df..eac631b58ea34892acd93d08d6207502685e9ed4 100644 (file)
@@ -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;
                }
index 38f0c4ff51e6819f42ab9f99f54cecc2230359eb..dfe4fdfd497a0b20a1523481c80793dce8ba8a56 100644 (file)
@@ -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 = '/';
index 457576b77dd8759f2e5f31279ebb6271e3118875..9710466281c658636443583941ff0eecda40f64d 100644 (file)
@@ -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;
index 1ae5e7c91697ec8508f2b6c827464ae0a683f2eb..eb0451b9d090757aa1b0cc9637351c1109720c3e 100644 (file)
@@ -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);
index cd19d2d5270bbafa4180107a44171f4e97ef38f6..5b899b3504236d893ede42b50925c5588d31c795 100644 (file)
@@ -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) {
index 8753aa8a99779057ca1b0892d4635fcf2e038a70..af52788f231c077f36071ad2123a4d9fa86113b0 100644 (file)
@@ -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 */
index 12876da2b8804c1d3a2c8a297adb8c79835ba0c4..53e143556721ce6297c3ef7271c8f6d9204e21cf 100644 (file)
@@ -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;
index ffabc47c7d0978ee9bee010f471ea6244513b204..beaf6fd35b05e3317e3521454e7590d62922fde2 100644 (file)
  *
  * 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);
 }
 
 /*
index 9a2f6917873a722856668f6aa297db3d932c3e92..439194eda9bb30b8a636af2fbc4b3838f944aa86 100644 (file)
@@ -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++;
                }
 
index 667ca298b96fa38d9a7cc6ad43f267ebd151ad67..c84df449091852c55110da87372964571392a3f0 100644 (file)
@@ -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
        )
 {
        /*
index c1d08132c318dde85f8b1ebbabb9dcbf6603e3e4..0ccf522b238ac4e4f4fdecab86539a48be8a5a0b 100644 (file)
@@ -23,7 +23,7 @@ authusekey(
        const u_char *str
        )
 {
-       int len;
+       size_t  len;
 
        len = strlen((const char *)str);
        if (0 == len)
index 07ead950f455919ab70f88bb2148abf2a18e047b..68f56e1637e248f1082d96f132ca83f681dcb00f 100644 (file)
@@ -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;
index 2bff929dc388eda2b3f233552a759bfb076c805b..19a93cdd427f29780c694a0f6644d65ae2404dd0 100644 (file)
@@ -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++;
        }
 
index 828b14cfbca87c5a90dc67ff7db0b27554c94528..7da20dc911e21203372a8e0d937196cd1114277b 100644 (file)
@@ -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);
index cc8868f8e7b84c66c603c8c4957b36c8c7e8a51d..9682d30021193a49de4547fcde2396938f3a0b8b 100644 (file)
@@ -331,7 +331,7 @@ msnprintf(
        )
 {
        va_list ap;
-       size_t  rc;
+       int     rc;
 
        va_start(ap, fmt);
        rc = mvsnprintf(buf, bufsiz, fmt, ap);
index 96348f2e8696e1a07db3142287aea22436052419..2a4f91affad5f0a88d702bd15f6b4e42ccf899cd 100644 (file)
@@ -16,6 +16,7 @@
 
 #include <l_stdlib.h>
 #include <ntp_random.h>
+#include "safecast.h"
 
 #ifdef USE_OPENSSL_CRYPTO_RAND
 #include <openssl/err.h>
@@ -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;
index a2b2d293470512f08c24b7fb86b6f2be00636e36..ebd456ac5df13edc01acf04ee98ea679258a8675 100644 (file)
@@ -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;
index 32970da0d124068f1b1e6913f62e7b4f7d401f9a..f5642e10dc1ea90bf75b69431decd1d5d37e2b01 100644 (file)
@@ -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;
 }
 
 
index 2b6a37473e1f2d240f49ffec7aaa37b53044b413..f4685e1ad4b678377b90ec0cf77121a2af85096c 100644 (file)
@@ -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
index 5026232ea5f007c4f4ca888df8f63743c6c8c36b..7273ac762e372739f2f5ce8f2ff9e04e17690ca1 100644 (file)
@@ -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)
        {
index f1da9ef8484e02dff1a2c5909ff9154908a43ad4..0621cd5649e45d6f8aafaa1ae214c0f811fc435e 100644 (file)
@@ -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)
        {
index 357ac2ec0f15f90e83a76ff423a8fd8c4b08768d..235962890f8c786ad7f375206da9f8ea4c29df6e 100644 (file)
@@ -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)
        {
index 9d2b676381c6978a44532ab35f5ad2802557536b..e4ebf0acc605b5519dca469fe4a51f4e23d1cba2 100644 (file)
@@ -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;
index ca4326336f8817771aac6b479699ce682da3f05d..e22ebb0a4808175ea55274cf087a8890e7d2a55e 100644 (file)
@@ -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 */
 
index a690e588b91b37c1a819e0219fa363abaf919e15..11d52acc5a24e6201ca93a4d8a0f3ffeea128e74 100644 (file)
@@ -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)
        {
index c4f02b07ad13ff72f87f62b2976e0f75a2fad3dc..d85b1a5da512d03a236dd528dca79e47b522a3c8 100644 (file)
@@ -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)
        {
index 426e897bec972870c34b655336605c8f9f7532ad..a60d01ec1870f93e13fb30356f899f4e29b0effb 100644 (file)
@@ -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)
        {
index 022549e82f4a6c288e2ba3de6e151758bb6a2f13..0d830354d7990fd9004487305fa79dc2afa888cd 100644 (file)
 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! */
index a65bc53860e6c3816fae2cf57b096f047f62f430..e9e3d84644ac0c22c564147c9367164ca4840a46 100644 (file)
@@ -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)
        {
index 64167f1520293488cad5e52c7e71987a45c1898a..69395ac4a5606fd9719c189da21dfe9a0ed37d11 100644 (file)
@@ -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)
        {
index 77363117bda4482598a64aec3bb70dc26123a189..2e174d0210abdd039edaf1af436054e07775d06b 100644 (file)
@@ -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;
index 7ce7ccd26e79924a0aaa0f8438da5049f514fca8..7dd39a7c93a81a355f8e8275e0de06dd4590fed6 100644 (file)
@@ -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;
index 5fc6ed52acae0f58199d96c62643218d01b34de4..dd23459dff3a46eecc8d74939e7daef45a2df35e 100644 (file)
@@ -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;
index b19d959147378aa47946d37096a3d422dba877cc..4b38aa8fd7d477fd535ac85dfde8c5db87d385a2 100644 (file)
@@ -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
index 2a15d7242647cad5dcd7a4b156dcd64640a8a550..b1f74de844e322c075654859a21176eaad907fd1 100644 (file)
@@ -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
 }
 
index 1f16ca79710612b14b665934a7924575f47ce014..d25cc2c0df1537e5fd10b348ace65b39b18a19f9 100644 (file)
@@ -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;
index 6073f99c456def7f159287926f10e43301fdd1b3..fa78ce1e4941b6dafa8b55b01eba976bf4b1dc65 100644 (file)
@@ -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++;
index 82bbaef257418a9c346f4bd18a9aa3f8590e1704..0b5fa2e3fa0e60f3f9a283d80fdbee060b540ca9 100644 (file)
@@ -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)
index 2ba11d08661463c4ff369706f6698886d08ce36a..857dcbf61082a82b000c2736b8dd0c9a1bdd35b9 100644 (file)
@@ -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;
index 828aa8c273bfba3be8c8bab322e52cf7dd59c124..03084a353622a4559a3186347fbdc3319a2a8056 100644 (file)
@@ -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;
index c4bc9011a5181b525d782c823abb82d8fe2169a4..3a95819821b5592f04216fbeea9106925e2c4076 100644 (file)
@@ -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)
index 8e905957367711bdafe779d61893a098a3a26f06..eb69dcb16bc8f90020a196dd9c33d611099a21d4 100644 (file)
@@ -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
        )
 {
index 6ab5d0267e9e4f3a5fa0a6d83f61cdadc0206884..f3e7f519ddc87bc31474cd81dc5c64fb579d799e 100644 (file)
@@ -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();
 
index 67ba6dfbecceec77442a105e57b0eeed1d66aa36..2799f3ee5dee8b85512c7e1637868a8c3d04c31a 100644 (file)
@@ -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)
index e70a7cf9c82eced968d342ca33a35a3e4ccb4448..e14a3fd122c501b3957d51c602a1ac094072620f 100644 (file)
@@ -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
index 9831929c490b498d92b0ab1d5168d10c3b75898f..a4271605c4137d492196129b775e7aacc090091a 100644 (file)
@@ -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
index ab177885b9a562c4c165bc5dd136fdc216441ef0..bef9ca365cb3d9f7d49f04cc2e83ce7dca75d5ec 100644 (file)
@@ -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) {
index 6da4a5cb765d0a6b7ff08b48f7486176fdb8eee1..4dfd1eb9080d337137fee7c18d038c9f5070cba0 100644 (file)
@@ -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 *);
index be8ffa24a7550260001a6ba4c124b2a610a2b311..2f57768b45408acca1e09e8362c5da6d7955efec 100644 (file)
@@ -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,
index becd956f2889476b0341e6d5a3345c54b5c5927a..3070e47b53c7f6731c9085c6464e6f4c54e8a184 100644 (file)
@@ -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,
index 84a622bba642aa32dead5bd9183b9a7af0ebbf0d..74caf27cd5e611b7f838169e5cb3980d0dd7c19c 100644 (file)
@@ -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);
index e53b4193c9e4993f24d25cb8e8f8445ad710d03d..b232065f751c8cc66f4b5812993352b662c3c533 100644 (file)
@@ -42,7 +42,7 @@ ntpq_doquerylist(
        associd_t associd,
        int auth,
        u_short *rstatus,
-       int *dsize,
+       size_t *dsize,
        const char **datap
        )
 {
index 78143b3510ee91427ac22cd123a241e3d14b79ae..3ce9c1cc286bc78612b3f07b840f5ba4b3a9d003 100644 (file)
@@ -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;
index c8d5eced800dba45b64f4d040d46b64942068eeb..288e5d00365c4f9e40532cbab8279301ec35f1c7 100644 (file)
@@ -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]));
 }
 
 
index 2575b885c179221abacdc97c7ec8db05cec2af99..171b807689ff7ee37ad15cbf4516becd8e9e5927 100644 (file)
@@ -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);
index e313272fd771e65d662c030e45d7d1d1951af20c..363e107e287ce0609a09ff312f8f06f02e20467c 100644 (file)
@@ -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
index 7d7ff7c4b207a62b3ef201a8aa85e119e05113b6..7bc2e04a9b11b376fc095e1a7df2a8b8e9beba07 100644 (file)
@@ -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);
 
index b3acc9f3921d9d4732240f9b7f14fffc49a9b348..549db9c974bd3984e76fa29fee24055cebec7244 100644 (file)
@@ -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");
index 4ee89899ba6f9ae06c0a368dd19ee3a1ff3205c7..bf88981317f0bd698a6ca51a1ecfbba22aac4b9b 100644 (file)
@@ -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);
index 621852af0e9ef36139012d8163fe566dec1c97bc..a14b081add53d5f2278da56f8298db59b0463724 100644 (file)
@@ -59,6 +59,7 @@ Juergen Perlinger (perlinger@ntp.org) Feb 2012
 #include <stdio.h>
 #include <process.h>
 #include <syslog.h>
+#include <limits.h>
 
 #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) */
 
index 53edd64ab217ddacdf3e0be9016effa9a1438de4..dc4a6333bf1db4105014b59242b8a7dfc4d494ef 100644 (file)
@@ -24,7 +24,7 @@
                SuppressStartupBanner="true"
                DebugInformationFormat="3"
                CompileAs="1"
-               DisableSpecificWarnings="4996"
+               DisableSpecificWarnings="4996;4267;4244"
        />
        <Tool
                Name="VCLinkerTool"
index 362fda82221c30cce01d9ea8d7d70ebb646b87c0..954df9a8cf6c96677fc65f966f5ab6a1224191b3 100644 (file)
@@ -88,9 +88,9 @@
                        />
                </Configuration>
                <Configuration
-                       Name="Debug|Win32"
+                       Name="Release|x64"
                        ConfigurationType="1"
-                       InheritedPropertySheets="..\debug.vsprops;..\common.vsprops"
+                       InheritedPropertySheets="..\release-x64.vsprops;..\common.vsprops"
                        UseOfMFC="0"
                        ATLMinimizesCRunTimeLibraryUsage="false"
                        CharacterSet="2"
                        />
                        <Tool
                                Name="VCMIDLTool"
+                               TargetEnvironment="3"
                                TypeLibraryName="$(IntDir)ntpd.tlb"
                                HeaderFileName=""
                        />
                        />
                        <Tool
                                Name="VCResourceCompilerTool"
-                               PreprocessorDefinitions="_DEBUG"
+                               PreprocessorDefinitions="NDEBUG"
                                Culture="1033"
                        />
                        <Tool
                        />
                </Configuration>
                <Configuration
-                       Name="Release|x64"
+                       Name="Debug|Win32"
                        ConfigurationType="1"
-                       InheritedPropertySheets="..\release-x64.vsprops;..\common.vsprops"
+                       InheritedPropertySheets="..\debug.vsprops;..\common.vsprops"
                        UseOfMFC="0"
                        ATLMinimizesCRunTimeLibraryUsage="false"
                        CharacterSet="2"
                        />
                        <Tool
                                Name="VCMIDLTool"
-                               TargetEnvironment="3"
                                TypeLibraryName="$(IntDir)ntpd.tlb"
                                HeaderFileName=""
                        />
                        />
                        <Tool
                                Name="VCResourceCompilerTool"
-                               PreprocessorDefinitions="NDEBUG"
+                               PreprocessorDefinitions="_DEBUG"
                                Culture="1033"
                        />
                        <Tool
                                RelativePath="..\..\..\..\include\ieee754io.h"
                                >
                        </File>
-                       <File
-                               RelativePath="..\..\..\..\lib\isc\win32\include\isc\net.h"
-                               >
-                       </File>
                        <File
                                RelativePath="..\..\..\..\lib\isc\win32\include\isc\int.h"
                                >
                                RelativePath="..\..\..\..\include\mbg_gps166.h"
                                >
                        </File>
+                       <File
+                               RelativePath="..\..\..\..\lib\isc\win32\include\isc\net.h"
+                               >
+                       </File>
                        <File
                                RelativePath="..\..\..\..\lib\isc\include\isc\netaddr.h"
                                >
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Debug|Win32"
+                                       Name="Release|x64"
                                        >
                                        <Tool
                                                Name="VCCustomBuildTool"
                                        />
                                </FileConfiguration>
                                <FileConfiguration
-                                       Name="Release|x64"
+                                       Name="Debug|Win32"
                                        >
                                        <Tool
                                                Name="VCCustomBuildTool"
                        <File
                                RelativePath="..\..\..\..\ntpd\refclock_arc.c"
                                >
+                               <FileConfiguration
+                                       Name="Release|Win32"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                               DisableSpecificWarnings="4307"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Release|x64"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                               DisableSpecificWarnings="4307"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Debug|Win32"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                               DisableSpecificWarnings="4307"
+                                       />
+                               </FileConfiguration>
+                               <FileConfiguration
+                                       Name="Debug|x64"
+                                       >
+                                       <Tool
+                                               Name="VCCLCompilerTool"
+                                               DisableSpecificWarnings="4307"
+                                       />
+                               </FileConfiguration>
                        </File>
                        <File
                                RelativePath="..\..\..\..\ntpd\refclock_as2201.c"
                                />
                        </FileConfiguration>
                        <FileConfiguration
-                               Name="Debug|Win32"
+                               Name="Release|x64"
                                ExcludedFromBuild="true"
                                >
                                <Tool
                                />
                        </FileConfiguration>
                        <FileConfiguration
-                               Name="Release|x64"
+                               Name="Debug|Win32"
                                ExcludedFromBuild="true"
                                >
                                <Tool
                                />
                        </FileConfiguration>
                        <FileConfiguration
-                               Name="Debug|Win32"
+                               Name="Release|x64"
                                >
                                <Tool
                                        Name="VCCustomBuildTool"
                                />
                        </FileConfiguration>
                        <FileConfiguration
-                               Name="Release|x64"
+                               Name="Debug|Win32"
                                >
                                <Tool
                                        Name="VCCustomBuildTool"
index 8b368d124432f4d1b656f76bd624def7ddaed1b0..829b9372527970032255b6ed0429a13735edcab6 100644 (file)
@@ -30,7 +30,7 @@
       <SuppressStartupBanner>true</SuppressStartupBanner>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <CompileAs>CompileAsC</CompileAs>
-      <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <DisableSpecificWarnings>4996;4267;4244;%(DisableSpecificWarnings)</DisableSpecificWarnings>
       <WarningLevel>Level3</WarningLevel>
     </ClCompile>
     <Link>
index fcf03b0137f61b6bd646c68f07bddd61b852e3e1..158e9f1f24703a923800e8139ab5bb7d9594540b 100644 (file)
     <ClInclude Include="..\..\..\..\include\ntp_types.h" />
     <ClInclude Include="..\..\..\..\include\ntp_unixtime.h" />
     <ClInclude Include="..\..\..\..\include\recvbuff.h" />
+    <ClInclude Include="..\..\..\..\include\safecast.h" />
     <ClInclude Include="..\..\..\..\include\timespecops.h" />
     <ClInclude Include="..\..\..\..\include\timetoa.h" />
     <ClInclude Include="..\..\..\..\include\timevalops.h" />
index 36fe23d899b285df5676eac69f7d6fb0bf9348ea..6cba2702c64f2b86edd4beac4fdd7549c1322e8d 100644 (file)
     <ClInclude Include="..\..\..\..\lib\isc\win32\include\isc\win32os.h">
       <Filter>Header Files</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\..\..\include\safecast.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <CustomBuild Include="..\..\libntp\messages.mc">
index 5bc7082100d2251652d697d749418dc0e3167536..6ee591b46eafb18332244e014d4f17c36d16b9e8 100644 (file)
     <ClCompile Include="..\..\..\..\ntpd\rc_cmdlength.c" />
     <ClCompile Include="..\..\..\..\ntpd\refclock_acts.c" />
     <ClCompile Include="..\..\..\..\ntpd\refclock_arbiter.c" />
-    <ClCompile Include="..\..\..\..\ntpd\refclock_arc.c" />
+    <ClCompile Include="..\..\..\..\ntpd\refclock_arc.c">
+      <DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='DebugXP|Win32'">4307;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='ReleaseXP|Win32'">4307;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4307;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4307;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+      <DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4307;%(DisableSpecificWarnings)</DisableSpecificWarnings>
+    </ClCompile>
     <ClCompile Include="..\..\..\..\ntpd\refclock_as2201.c" />
     <ClCompile Include="..\..\..\..\ntpd\refclock_atom.c" />
     <ClCompile Include="..\..\..\..\ntpd\refclock_bancomm.c" />
index ddd45efe3cb5a1e856f443db0f119661949848a9..6a176c57f4f40eb81a04228164797f7a278b43f0 100644 (file)
@@ -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,
index 6a10c01c5c66d02df13163a67aed724029f66e24..596122e3d59cf88187cafe962b1e3caccd60892e 100644 (file)
@@ -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
index 98d6e83093380f010759e9668d4c57c2cbd84b82..08d236e24df92d6689805e92e95c15433db150d2 100644 (file)
@@ -26,6 +26,7 @@ setUp(void) {
 }
 
 
+void
 tearDown(void) {
        restrict_u *empty_restrict = malloc(sizeof(restrict_u));
        memset(empty_restrict, 0, sizeof(restrict_u));
index 0d945eb338327a877b154434f5534be8aa73cdfe..d88446207afe567a78f85fcb8a6c5284747b1fbf 100644 (file)
@@ -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());
 }
index 662cada0b3ca7f3975acdfc989fb615b01a15d75..8c5f23a667da21217a2bc2ae35083cb7b0d931af 100644 (file)
@@ -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());
 }
index bf6794d4c7e4a75b2a62b6e58700b1e4975a6629..862a2ee2bbae35fb82949fe688ee34ec3aee27a0 100644 (file)
@@ -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);
index 45972fb979bad87ee94ce539fc1cb66fd87a7592..180d28cabb492b3683aef62fda5ffb092c9eb44e 100644 (file)
@@ -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; 
index e65cd01097ad32903efaef0c91617b432a43c66e..be0a768fec819eb3feab024451c8200fd4a95edd 100644 (file)
@@ -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());
 }
index 5bc639ecea46343548c169b152406553758b3efa..519bddca6d467f8be8f9bca08e1291ffbfc05106 100644 (file)
@@ -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
index fd89c5b82feec9adf231f2420de876472bd46d47..f9255b08c0ff5fbd97aa7a16dbe359499fc6e537 100644 (file)
@@ -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" );
 
index 9568adc8d2fefc48364752f71b950ef96de6f022..ab34927cd8bd9e677fbb8f609e441d956dff8dee 100644 (file)
@@ -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));