aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXin LI <delphij@FreeBSD.org>2023-06-08 01:06:07 +0000
committerXin LI <delphij@FreeBSD.org>2023-06-08 01:06:07 +0000
commit1232c7884d4a9bc69d4dd71cd293f92bb1ae6197 (patch)
tree9c301e1ba59a09efdedaccd7f3ee01abfa5a053c
parent653738e895ba022be1179a95a85089e7bc66dbbe (diff)
downloadsrc-1232c7884d4a9bc69d4dd71cd293f92bb1ae6197.tar.gz
src-1232c7884d4a9bc69d4dd71cd293f92bb1ae6197.zip
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
-rw-r--r--usr.bin/hexdump/display.c2
1 files changed, 1 insertions, 1 deletions
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);