aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Jacobson <mhjacobson@me.com>2025-11-25 01:30:10 +0000
committerWarner Losh <imp@FreeBSD.org>2025-11-25 18:17:26 +0000
commit4c8bf76893a8b39eda15f91d1515c6bf6a02a9a6 (patch)
tree872448d50702a464d064bdc49b299da3dcae967a
parentf7725c3c27e685478398833fbe32504c38438d69 (diff)
fdread: Fix logic bug when reading by sector
When reading by sector (because reading a whole track failed), we can accidentally fall into the "should not happen" path, which both (a) emits a spurious error message and (b) fouls up our position accounting going forward. Ensure we do not inappropriately fall into that path. Avoid obscuring the "short after" message in cases where it happens. Signed-off-by: Matt Jacobson <mhjacobson@me.com> Reviewed by: imp Pull Request: https://github.com/freebsd/freebsd-src/pull/1897
-rw-r--r--usr.sbin/fdread/fdread.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/usr.sbin/fdread/fdread.c b/usr.sbin/fdread/fdread.c
index ee8548699783..02dbaf98da8c 100644
--- a/usr.sbin/fdread/fdread.c
+++ b/usr.sbin/fdread/fdread.c
@@ -275,12 +275,13 @@ doread(int fd, FILE *of, const char *_devname)
errx(EX_OSERR, "unexpected read() result: %d",
rv);
}
+ continue;
}
if ((unsigned)rv < tracksize) {
/* should not happen */
nbytes += rv;
if (!quiet)
- fprintf(stderr, "\nshort after %5d KB\r",
+ fprintf(stderr, "\nshort after %5d KB\n",
nbytes / 1024);
fwrite(trackbuf, sizeof(unsigned char), rv, of);
fflush(of);