Abort transfer if fseeko() fails.
CID: 1420215 Reviewed by: asomers MFC after: 1 week Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D24454
This commit is contained in:
parent
d000623a21
commit
0c0119856b
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=360167
@ -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 @@ tftp_send(int peer, uint16_t *block, struct tftp_stats *ts)
|
||||
|
||||
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 @@ tftp_send(int peer, uint16_t *block, struct tftp_stats *ts)
|
||||
|
||||
/* 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 @@ tftp_send(int peer, uint16_t *block, struct tftp_stats *ts)
|
||||
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++;
|
||||
|
Loading…
Reference in New Issue
Block a user