svn commit: r338540 - head/stand/libsa
Toomas Soome
tsoome at FreeBSD.org
Sun Sep 9 06:30:16 UTC 2018
Author: tsoome
Date: Sun Sep 9 06:30:15 2018
New Revision: 338540
URL: https://svnweb.freebsd.org/changeset/base/338540
Log:
libsa: validate tftp_makereq() after we did reset the read
The name check referred in the comment is not the only possible error source,
we need to validate the result.
Reviewed by: allanjude
Approved by: re (kib)
Differential Revision: https://reviews.freebsd.org/D17081
Modified:
head/stand/libsa/tftp.c
Modified: head/stand/libsa/tftp.c
==============================================================================
--- head/stand/libsa/tftp.c Sat Sep 8 23:39:26 2018 (r338539)
+++ head/stand/libsa/tftp.c Sun Sep 9 06:30:15 2018 (r338540)
@@ -490,6 +490,9 @@ tftp_read(struct open_file *f, void *addr, size_t size
size_t *resid /* out */)
{
struct tftp_handle *tftpfile;
+ int rc;
+
+ rc = 0;
tftpfile = (struct tftp_handle *) f->f_fsdata;
while (size > 0) {
@@ -501,19 +504,19 @@ tftp_read(struct open_file *f, void *addr, size_t size
if (tftpfile->currblock > needblock) { /* seek backwards */
tftp_senderr(tftpfile, 0, "No error: read aborted");
- tftp_makereq(tftpfile); /* no error check, it worked
- * for open */
+ rc = tftp_makereq(tftpfile);
+ if (rc != 0)
+ break;
}
while (tftpfile->currblock < needblock) {
- int res;
- res = tftp_getnextblock(tftpfile);
- if (res) { /* no answer */
+ rc = tftp_getnextblock(tftpfile);
+ if (rc) { /* no answer */
#ifdef TFTP_DEBUG
printf("tftp: read error\n");
#endif
- return (res);
+ return (rc);
}
if (tftpfile->islastblock)
break;
@@ -553,7 +556,7 @@ tftp_read(struct open_file *f, void *addr, size_t size
if (resid)
*resid = size;
- return (0);
+ return (rc);
}
static int
More information about the svn-src-all
mailing list