From: Dave Hart Date: Fri, 17 Dec 2010 02:53:54 +0000 (+0000) Subject: [Bug 1757] oncore snprintf("%m") doesn't expand %m. X-Git-Tag: NTP_4_2_7P95~1^2^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=da6f72b58c917bf8700d5146de3f149db2ac9e0f;p=thirdparty%2Fntp.git [Bug 1757] oncore snprintf("%m") doesn't expand %m. bk: 4d0ad0c28AXhCwuqMIsNvBD2Hf8X6g --- diff --git a/ChangeLog b/ChangeLog index 1efeaae50..daf62709c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -10,6 +10,7 @@ local timezone. * [Bug 1751] Support for Atari FreeMiNT OS. * [Bug 1754] --version output should be more verbose. +* [Bug 1757] oncore snprintf("%m") doesn't expand %m. * Upgrade to libopts 33.5.8 from AutoGen 5.11.6pre3. * Suppress ntp-keygen OpenSSL version display for --help, --version, display both build and runtime OpenSSL versions when they differ. diff --git a/include/ntp_stdlib.h b/include/ntp_stdlib.h index 1f8e40480..d1033ffe4 100644 --- a/include/ntp_stdlib.h +++ b/include/ntp_stdlib.h @@ -33,7 +33,10 @@ # endif #endif -extern void msyslog (int, const char *, ...) +extern size_t mvsnprintf(char *, size_t, const char *, va_list); +extern size_t msnprintf(char *, size_t, const char *, ...) + __attribute__((__format__(__printf__, 3, 4))); +extern void msyslog(int, const char *, ...) __attribute__((__format__(__printf__, 2, 3))); /* diff --git a/libntp/msyslog.c b/libntp/msyslog.c index 833a6cc1f..b26db7789 100644 --- a/libntp/msyslog.c +++ b/libntp/msyslog.c @@ -127,22 +127,17 @@ format_errmsg(char *nfmt, int lennfmt, const char *fmt, int errval) *n = '\0'; } -#if defined(__STDC__) || defined(HAVE_STDARG_H) -void msyslog(int level, const char *fmt, ...) -#else /* defined(__STDC__) || defined(HAVE_STDARG_H) */ - /*VARARGS*/ - void msyslog(va_alist) - va_dcl -#endif /* defined(__STDC__) || defined(HAVE_STDARG_H) */ + +size_t +mvsnprintf( + char * buf, + size_t bufsiz, + const char * fmt, + va_list ap + ) { -#if defined(__STDC__) || defined(HAVE_STDARG_H) -#else - int level; - const char *fmt; -#endif - va_list ap; - char buf[1025], nfmt[256]; - int errval; + char nfmt[256]; + int errval; /* * Save the error value as soon as possible @@ -155,17 +150,42 @@ void msyslog(int level, const char *fmt, ...) errval = errno; #endif /* SYS_WINNT */ -#if defined(__STDC__) || defined(HAVE_STDARG_H) + format_errmsg(nfmt, sizeof(nfmt), fmt, errval); + + return vsnprintf(buf, bufsiz, nfmt, ap); +} + +size_t +msnprintf( + char * buf, + size_t bufsiz, + const char * fmt, + ... + ) +{ + va_list ap; + size_t rc; + va_start(ap, fmt); -#else - va_start(ap); + rc = mvsnprintf(buf, bufsiz, fmt, ap); + va_end(ap); - level = va_arg(ap, int); - fmt = va_arg(ap, char *); -#endif - format_errmsg(nfmt, sizeof(nfmt), fmt, errval); + return rc; +} + + +void +msyslog( + int level, + const char * fmt, + ... + ) +{ + char buf[1024]; + va_list ap; - vsnprintf(buf, sizeof(buf), nfmt, ap); + va_start(ap, fmt); + mvsnprintf(buf, sizeof(buf), fmt, ap); va_end(ap); addto_syslog(level, buf); } diff --git a/ntpd/ntp_io.c b/ntpd/ntp_io.c index cf253ca95..16794a265 100644 --- a/ntpd/ntp_io.c +++ b/ntpd/ntp_io.c @@ -2766,7 +2766,7 @@ io_multicast_add( */ if (IS_IPV4(addr)) one_ep = wildipv4; - else if (IS_IPV6(addr)) + else one_ep = wildipv6; for (ep = ep_list; ep != NULL; ep = ep->elink) { if (ep->ignore_packets || AF(&ep->sin) != AF(addr) || diff --git a/ntpd/refclock_oncore.c b/ntpd/refclock_oncore.c index 80ffc2bdd..bce8db882 100644 --- a/ntpd/refclock_oncore.c +++ b/ntpd/refclock_oncore.c @@ -846,13 +846,13 @@ oncore_ppsapi( char *cp, Msg[160]; if (time_pps_getcap(instance->pps_h, &cap) < 0) { - snprintf(Msg, sizeof(Msg), "time_pps_getcap failed: %m"); + msnprintf(Msg, sizeof(Msg), "time_pps_getcap failed: %m"); oncore_log(instance, LOG_ERR, Msg); return (0); } if (time_pps_getparams(instance->pps_h, &instance->pps_p) < 0) { - snprintf(Msg, sizeof(Msg), "time_pps_getparams failed: %m"); + msnprintf(Msg, sizeof(Msg), "time_pps_getparams failed: %m"); oncore_log(instance, LOG_ERR, Msg); return (0); } @@ -912,7 +912,7 @@ oncore_ppsapi( if (time_pps_kcbind(instance->pps_h, PPS_KC_HARDPPS, i, PPS_TSFMT_TSPEC) < 0) { - snprintf(Msg, sizeof(Msg), "time_pps_kcbind failed: %m"); + msnprintf(Msg, sizeof(Msg), "time_pps_kcbind failed: %m"); oncore_log(instance, LOG_ERR, Msg); oncore_log(instance, LOG_ERR, "HARDPPS failed, abort..."); return (0); @@ -1745,14 +1745,14 @@ oncore_get_timestamp( */ if (time_pps_getcap(instance->pps_h, ¤t_mode) < 0) { - snprintf(Msg, sizeof(Msg), "time_pps_getcap failed: %m"); + msnprintf(Msg, sizeof(Msg), "time_pps_getcap failed: %m"); oncore_log(instance, LOG_ERR, Msg); peer->flags &= ~FLAG_PPS; return; } if (time_pps_getparams(instance->pps_h, ¤t_params) < 0) { - snprintf(Msg, sizeof(Msg), "time_pps_getparams failed: %m"); + msnprintf(Msg, sizeof(Msg), "time_pps_getparams failed: %m"); oncore_log(instance, LOG_ERR, Msg); peer->flags &= ~FLAG_PPS; return;