From 4b192dc71d7a4ad730460b2df5ff4dcb15ffcdca Mon Sep 17 00:00:00 2001 From: tjr Date: Thu, 13 May 2004 05:36:38 +0000 Subject: Handle variable argument lists correctly in reply() and lreply(). In particular, do not pass the same va_list to both vprintf() and vsyslog() without first reinitializing it. This fixes ftpd -d on amd64. --- libexec/ftpd/ftpd.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'libexec') diff --git a/libexec/ftpd/ftpd.c b/libexec/ftpd/ftpd.c index dab7091..b73d954 100644 --- a/libexec/ftpd/ftpd.c +++ b/libexec/ftpd/ftpd.c @@ -2380,14 +2380,17 @@ reply(int n, const char *fmt, ...) { va_list ap; - va_start(ap, fmt); (void)printf("%d ", n); + va_start(ap, fmt); (void)vprintf(fmt, ap); + va_end(ap); (void)printf("\r\n"); (void)fflush(stdout); if (ftpdebug) { syslog(LOG_DEBUG, "<--- %d ", n); + va_start(ap, fmt); vsyslog(LOG_DEBUG, fmt, ap); + va_end(ap); } } @@ -2396,14 +2399,17 @@ lreply(int n, const char *fmt, ...) { va_list ap; - va_start(ap, fmt); (void)printf("%d- ", n); + va_start(ap, fmt); (void)vprintf(fmt, ap); + va_end(ap); (void)printf("\r\n"); (void)fflush(stdout); if (ftpdebug) { syslog(LOG_DEBUG, "<--- %d- ", n); + va_start(ap, fmt); vsyslog(LOG_DEBUG, fmt, ap); + va_end(ap); } } -- cgit v1.1