Commit b377324e authored by Douglas Bagnall's avatar Douglas Bagnall Committed by Rusty Russell

opt: always initialise values in set_llong_with_suffix()

The helper API functions based on set_llong_with_suffix() left the
value uninitialised in the case of an empty string argument. This is
quite unlikely to have caused problem in practice, as most values will
have already been set to a default and the non-NULL error message
should have triggered an early exit or some other emergency action.
Nevertheless, it caused a compiler warning on some minor version of
GCC 4.8 which I no longer seem to have, and the complaint seemed
reasonable at the time.

If an empty string (or any other non-numeric value) is passed to
strtoll(), the result is zero. As far as I know, the strtoll() call is
only short-circuited here to form a more specific error message, not
because there is a good reason for the empty string to be a special
non-initialising case. So let's set it to zero.
Signed-off-by: default avatarDouglas Bagnall <douglas@halo.gen.nz>
Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
parent 19bfc149
......@@ -238,9 +238,10 @@ static char *set_llong_with_suffix(const char *arg, long long *ll,
const long long base)
{
char *endp;
if (!arg[0])
if (!arg[0]){
*ll = 0;
return arg_bad("'%s' (an empty string) is not a number", arg);
}
errno = 0;
*ll = strtoll(arg, &endp, 0);
if (errno)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment