badblocks: fix a possible bug in parse_uint

Currently, the parse_uint() function checks errno after the strtoul()
call. But, according to the man page of strtoul():
  Since strtoul() can legitimately return 0 or LONG_MAX (LLONG_MAX for
  strtoull()) on  both  success  and failure,  the  calling program
  should  set errno to 0 before the call, and then determine if an error
  occurred by checking whether errno has a nonzero value after the call.

When using locales, it can happen that looking for the locale files is
not successful, and therefore errno will have a nonzero value from this.
And since the argument parsing is one of the first things done after
startup, parse_uint() will wrongly report errors.

The fix is to simply reset errno to zero before calling strtoul().

Signed-off-by: Iustin Pop <iustin@google.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
1 file changed