hexdump: don't unconditionally limit the usable address range
authorDenys Vlasenko <vda.linux@googlemail.com>
Wed, 27 Mar 2013 14:15:33 +0000 (15:15 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Wed, 27 Mar 2013 14:15:33 +0000 (15:15 +0100)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
libbb/dump.c
util-linux/hexdump.c

index 7e43564..566881a 100644 (file)
@@ -333,7 +333,7 @@ static void do_skip(priv_dumper_t *dumper, const char *fname, int statok)
                        return;
                }
        }
-       if (fseek(stdin, dumper->pub.dump_skip, SEEK_SET)) {
+       if (fseeko(stdin, dumper->pub.dump_skip, SEEK_SET)) {
                bb_simple_perror_msg_and_die(fname);
        }
        dumper->address += dumper->pub.dump_skip;
index 9a312f9..43fc188 100644 (file)
@@ -116,7 +116,12 @@ int hexdump_main(int argc, char **argv)
                        dumper->dump_length = xatoi_positive(optarg);
                } /* else */
                if (ch == 's') { /* compat: -s accepts hex numbers too */
-                       dumper->dump_skip = xstrtoul_range_sfx(optarg, /*base:*/ 0, /*lo:*/ 0, /*hi:*/ LONG_MAX, suffixes);
+                       dumper->dump_skip = xstrtoul_range_sfx(
+                               optarg,
+                               /*base:*/ 0,
+                               /*lo:*/ 0, /*hi:*/ OFF_T_MAX,
+                               suffixes
+                       );
                } /* else */
                if (ch == 'v') {
                        dumper->dump_vflag = ALL;