diff options
Diffstat (limited to 'util-linux/fdisk.c')
-rw-r--r-- | util-linux/fdisk.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/util-linux/fdisk.c b/util-linux/fdisk.c index c226d6a..2f87f1c 100644 --- a/util-linux/fdisk.c +++ b/util-linux/fdisk.c @@ -330,13 +330,16 @@ read_maybe_empty(const char *mesg) static int read_hex(const struct systypes *sys) { + unsigned long v; while (1) { read_nonempty(_("Hex code (type L to list codes): ")); - if (*line_ptr == 'l' || *line_ptr == 'L') + if (*line_ptr == 'l' || *line_ptr == 'L') { list_types(sys); - else if (isxdigit(*line_ptr)) { - return strtoul(line_ptr, NULL, 16); + continue; } + v = bb_strtoul(line_ptr, NULL, 16); + if (errno || v > 0xff) continue; + return v; } } #endif /* CONFIG_FEATURE_FDISK_WRITABLE */ |