git: 1232c7884d4a - main - od(1): Fix skip value handling
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 08 Jun 2023 01:06:18 UTC
The branch main has been updated by delphij: URL: https://cgit.FreeBSD.org/src/commit/?id=1232c7884d4a9bc69d4dd71cd293f92bb1ae6197 commit 1232c7884d4a9bc69d4dd71cd293f92bb1ae6197 Author: Xin LI <delphij@FreeBSD.org> AuthorDate: 2023-06-08 01:06:07 +0000 Commit: Xin LI <delphij@FreeBSD.org> CommitDate: 2023-06-08 01:06:07 +0000 od(1): Fix skip value handling POSIX defines -j as the number of bytes that od(1) should skip over the concatenated input files. The existing code tries to implement this behavior by checking if the current address was smaller than the skip value. However, this is not correct, because we adjust both the skip value and the address at the same time when we do fseeko (when file is seekable) or getchar (when file is not seekable). This commit fixes the problem by expecting the skip value to be zero upon return of next(). If the condition is not satisfied, a diagnostic message will be issued. Reported-by: Mohamed Akram <mohd.akram@outlook.com> Reviewed-by: emaste PR: 271832 MFC-after: 2 weeks Differential Revision: https://reviews.freebsd.org/D40446 --- usr.bin/hexdump/display.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usr.bin/hexdump/display.c b/usr.bin/hexdump/display.c index cad548e1ec41..36306ededfc6 100644 --- a/usr.bin/hexdump/display.c +++ b/usr.bin/hexdump/display.c @@ -263,7 +263,7 @@ get(void) * block and set the end flag. */ if (!length || (ateof && !next((char **)NULL))) { - if (odmode && address < skip) + if (odmode && skip > 0) errx(1, "cannot skip past end of input"); if (need == blocksize) return((u_char *)NULL);