really carefully check strtoll() return value before casting to uint64_t

This commit is contained in:
Christian Grothoff 2017-10-06 22:04:51 +02:00
parent 332a37292c
commit d86a6615cc
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC
2 changed files with 9 additions and 4 deletions

View File

@ -1941,6 +1941,7 @@ wire_transfer_information_cb (void *cls,
return;
}
GNUNET_assert (NULL != dki); /* mostly to help static analysis */
/* Check transaction history to see if it supports aggregate
valuation */
check_transaction_history (coin_pub,

View File

@ -363,18 +363,22 @@ get_anchor_iter (void *cls,
struct GNUNET_TIME_Absolute stamp;
const char *base;
char *end = NULL;
long long int bval;
base = GNUNET_STRINGS_get_short_name (filename);
stamp.abs_value_us = strtoll (base,
&end,
10);
if ((NULL == end) || (0 != *end))
bval = strtoll (base,
&end,
10);
if ( (NULL == end) ||
(0 != *end) ||
(0 > bval) )
{
fprintf(stderr,
"Ignoring unexpected file `%s'.\n",
filename);
return GNUNET_OK;
}
stamp.abs_value_us = (uint64_t) bval;
*anchor = GNUNET_TIME_absolute_max (stamp,
*anchor);
return GNUNET_OK;