svn commit: r360167 - head/libexec/tftpd

John Baldwin jhb at FreeBSD.org
Tue Apr 21 17:32:58 UTC 2020


Author: jhb
Date: Tue Apr 21 17:32:57 2020
New Revision: 360167
URL: https://svnweb.freebsd.org/changeset/base/360167

Log:
  Abort transfer if fseeko() fails.
  
  CID:		1420215
  Reviewed by:	asomers
  MFC after:	1 week
  Sponsored by:	DARPA
  Differential Revision:	https://reviews.freebsd.org/D24454

Modified:
  head/libexec/tftpd/tftp-transfer.c

Modified: head/libexec/tftpd/tftp-transfer.c
==============================================================================
--- head/libexec/tftpd/tftp-transfer.c	Tue Apr 21 17:30:56 2020	(r360166)
+++ head/libexec/tftpd/tftp-transfer.c	Tue Apr 21 17:32:57 2020	(r360167)
@@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$");
 #include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 #include <syslog.h>
 
 #include "tftp-file.h"
@@ -124,7 +125,13 @@ read_block:
 
 					acktry++;
 					ts->retries++;
-					seek_file(window[0].offset);
+					if (seek_file(window[0].offset) != 0) {
+						tftp_log(LOG_ERR,
+						    "seek_file failed: %s",
+						    strerror(errno));
+						send_error(peer, errno + 100);
+						goto abort;
+					}
 					*block = window[0].block;
 					windowblock = 0;
 					goto read_block;
@@ -158,7 +165,13 @@ read_block:
 
 					/* Resend the current window. */
 					ts->retries++;
-					seek_file(window[0].offset);
+					if (seek_file(window[0].offset) != 0) {
+						tftp_log(LOG_ERR,
+						    "seek_file failed: %s",
+						    strerror(errno));
+						send_error(peer, errno + 100);
+						goto abort;
+					}
 					*block = window[0].block;
 					windowblock = 0;
 					goto read_block;
@@ -183,7 +196,14 @@ read_block:
 					if (debug&DEBUG_SIMPLE)
 						tftp_log(LOG_DEBUG,
 						    "Partial ACK");
-					seek_file(window[i + 1].offset);
+					if (seek_file(window[i + 1].offset) !=
+					    0) {
+						tftp_log(LOG_ERR,
+						    "seek_file failed: %s",
+						    strerror(errno));
+						send_error(peer, errno + 100);
+						goto abort;
+					}
 					*block = window[i + 1].block;
 					windowblock = 0;
 					ts->retries++;


More information about the svn-src-head mailing list