diff options
| author | Matt Jacobson <mhjacobson@me.com> | 2025-11-25 01:30:10 +0000 |
|---|---|---|
| committer | Warner Losh <imp@FreeBSD.org> | 2025-11-25 18:17:26 +0000 |
| commit | 4c8bf76893a8b39eda15f91d1515c6bf6a02a9a6 (patch) | |
| tree | 872448d50702a464d064bdc49b299da3dcae967a | |
| parent | f7725c3c27e685478398833fbe32504c38438d69 (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.c | 3 |
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); |
