Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 31 Jan 2013 00:02:36 +0000 (UTC)
From:      Marius Strobl <marius@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r246139 - head/libexec/tftpd
Message-ID:  <201301310002.r0V02aki043380@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: marius
Date: Thu Jan 31 00:02:36 2013
New Revision: 246139
URL: http://svnweb.freebsd.org/changeset/base/246139

Log:
  Mark tftp_log() as __printflike() (which would have caught the bug
  fixed in r246106) and deal with the fallout.
  
  MFC after:	2 weeks

Modified:
  head/libexec/tftpd/tftp-io.c
  head/libexec/tftpd/tftp-options.c
  head/libexec/tftpd/tftp-utils.h
  head/libexec/tftpd/tftpd.c

Modified: head/libexec/tftpd/tftp-io.c
==============================================================================
--- head/libexec/tftpd/tftp-io.c	Wed Jan 30 23:59:27 2013	(r246138)
+++ head/libexec/tftpd/tftp-io.c	Thu Jan 31 00:02:36 2013	(r246139)
@@ -106,13 +106,13 @@ send_packet(int peer, uint16_t block, ch
 	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,

Modified: head/libexec/tftpd/tftp-options.c
==============================================================================
--- head/libexec/tftpd/tftp-options.c	Wed Jan 30 23:59:27 2013	(r246138)
+++ head/libexec/tftpd/tftp-options.c	Thu Jan 31 00:02:36 2013	(r246139)
@@ -99,16 +99,17 @@ option_tsize(int peer __unused, struct t
 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 */
 	}

Modified: head/libexec/tftpd/tftp-utils.h
==============================================================================
--- head/libexec/tftpd/tftp-utils.h	Wed Jan 30 23:59:27 2013	(r246138)
+++ head/libexec/tftpd/tftp-utils.h	Thu Jan 31 00:02:36 2013	(r246139)
@@ -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

Modified: head/libexec/tftpd/tftpd.c
==============================================================================
--- head/libexec/tftpd/tftpd.c	Wed Jan 30 23:59:27 2013	(r246138)
+++ head/libexec/tftpd/tftpd.c	Thu Jan 31 00:02:36 2013	(r246139)
@@ -65,6 +65,7 @@ __FBSDID("$FreeBSD$");
 #include <fcntl.h>
 #include <netdb.h>
 #include <pwd.h>
+#include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -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;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201301310002.r0V02aki043380>