diff options
-rw-r--r-- | src/dd.c | 6 | ||||
-rwxr-xr-x | tests/dd/misc.sh | 10 |
2 files changed, 16 insertions, 0 deletions
@@ -1342,6 +1342,12 @@ parse_integer (const char *str, strtol_error *invalid) return 0; } + if (n == 0 && STRPREFIX (str, "0x")) + error (0, 0, + _("warning: %s is a zero multiplier; " + "use %s if that is intended"), + quote_n (0, "0x"), quote_n (1, "00x")); + n *= multiplier; } else if (e != LONGINT_OK) diff --git a/tests/dd/misc.sh b/tests/dd/misc.sh index 2c24b5087..094fc5375 100755 --- a/tests/dd/misc.sh +++ b/tests/dd/misc.sh @@ -107,4 +107,14 @@ compare err_ok err || fail=1 test $fail -eq 0 && fail=$warn +# Check a warning is issued for ambiguous 0x... numbers +dd if=/dev/null count=0x1 seek=0x1 skip=0x1 status=none 2>err || fail=1 +cat <<\EOF >exp +dd: warning: '0x' is a zero multiplier; use '00x' if that is intended +dd: warning: '0x' is a zero multiplier; use '00x' if that is intended +dd: warning: '0x' is a zero multiplier; use '00x' if that is intended +EOF +compare exp err || fail=1 + + Exit $fail |