From b713097ae3044c616638416df61302bb7c2198db Mon Sep 17 00:00:00 2001 From: Marius Strobl Date: Thu, 31 Jan 2013 00:02:36 +0000 Subject: [PATCH] Mark tftp_log() as __printflike() (which would have caught the bug fixed in r246106) and deal with the fallout. MFC after: 2 weeks --- libexec/tftpd/tftp-io.c | 8 ++++---- libexec/tftpd/tftp-options.c | 13 +++++++------ libexec/tftpd/tftp-utils.h | 2 +- libexec/tftpd/tftpd.c | 9 +++++---- 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/libexec/tftpd/tftp-io.c b/libexec/tftpd/tftp-io.c index eaf4f39295b4..6dabf4f70064 100644 --- a/libexec/tftpd/tftp-io.c +++ b/libexec/tftpd/tftp-io.c @@ -106,13 +106,13 @@ send_packet(int peer, uint16_t block, char *pkt, int size) for (i = 0; i < 12 ; i++) { DROPPACKETn("send_packet", 0); - if (sendto(peer, pkt, size, 0, - (struct sockaddr *)&peer_sock, peer_sock.ss_len) - == size) { + if (sendto(peer, pkt, size, 0, (struct sockaddr *)&peer_sock, + peer_sock.ss_len) == size) { if (i) tftp_log(LOG_ERR, "%s block %d, attempt %d successful", - block, i); + packettype(ntohs(((struct tftphdr *) + (pkt))->th_opcode)), block, i); return (0); } tftp_log(LOG_ERR, diff --git a/libexec/tftpd/tftp-options.c b/libexec/tftpd/tftp-options.c index d5b638692044..f926f32be0ba 100644 --- a/libexec/tftpd/tftp-options.c +++ b/libexec/tftpd/tftp-options.c @@ -99,16 +99,17 @@ option_tsize(int peer __unused, struct tftphdr *tp __unused, int mode, int option_timeout(int peer) { + int to; if (options[OPT_TIMEOUT].o_request == NULL) return (0); - int to = atoi(options[OPT_TIMEOUT].o_request); + to = atoi(options[OPT_TIMEOUT].o_request); if (to < TIMEOUT_MIN || to > TIMEOUT_MAX) { tftp_log(acting_as_client ? LOG_ERR : LOG_WARNING, "Received bad value for timeout. " - "Should be between %d and %d, received %s", - TIMEOUT_MIN, TIMEOUT_MAX); + "Should be between %d and %d, received %d", + TIMEOUT_MIN, TIMEOUT_MAX, to); send_error(peer, EBADOP); if (acting_as_client) return (1); @@ -195,14 +196,14 @@ option_blksize(int peer) tftp_log(LOG_ERR, "Invalid blocksize (%d bytes), " "net.inet.udp.maxdgram sysctl limits it to " - "%d bytes.\n", size, maxdgram); + "%ld bytes.\n", size, maxdgram); send_error(peer, EBADOP); return (1); } else { tftp_log(LOG_WARNING, "Invalid blocksize (%d bytes), " "net.inet.udp.maxdgram sysctl limits it to " - "%d bytes.\n", size, maxdgram); + "%ld bytes.\n", size, maxdgram); size = maxdgram; /* No reason to return */ } @@ -257,7 +258,7 @@ option_blksize2(int peer __unused) } tftp_log(LOG_INFO, "Invalid blocksize2 (%d bytes), net.inet.udp.maxdgram " - "sysctl limits it to %d bytes.\n", size, maxdgram); + "sysctl limits it to %ld bytes.\n", size, maxdgram); size = sizes[i]; /* No need to return */ } diff --git a/libexec/tftpd/tftp-utils.h b/libexec/tftpd/tftp-utils.h index 0468612d9d74..c1becf3542d4 100644 --- a/libexec/tftpd/tftp-utils.h +++ b/libexec/tftpd/tftp-utils.h @@ -106,7 +106,7 @@ const char *debug_show(int d); extern int tftp_logtostdout; void tftp_openlog(const char *ident, int logopt, int facility); void tftp_closelog(void); -void tftp_log(int priority, const char *message, ...); +void tftp_log(int priority, const char *message, ...) __printflike(2, 3); /* * Performance figures diff --git a/libexec/tftpd/tftpd.c b/libexec/tftpd/tftpd.c index a0010b3c5032..87f80f0ca7c4 100644 --- a/libexec/tftpd/tftpd.c +++ b/libexec/tftpd/tftpd.c @@ -65,6 +65,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -799,8 +800,8 @@ tftp_xmitfile(int peer, const char *mode) tftp_send(peer, &block, &ts); read_close(); if (debug&DEBUG_SIMPLE) - tftp_log(LOG_INFO, "Sent %d bytes in %d seconds", - ts.amount, time(NULL) - now); + tftp_log(LOG_INFO, "Sent %jd bytes in %jd seconds", + (intmax_t)ts.amount, (intmax_t)time(NULL) - now); } static void @@ -832,8 +833,8 @@ tftp_recvfile(int peer, const char *mode) f = now2.tv_sec - now1.tv_sec + (now2.tv_usec - now1.tv_usec) / 100000.0; tftp_log(LOG_INFO, - "Download of %d bytes in %d blocks completed after %0.1f seconds\n", - ts.amount, block, f); + "Download of %jd bytes in %d blocks completed after %0.1f seconds\n", + (intmax_t)ts.amount, block, f); } return;