| diff -up authd-1.4.3/authd.c.jiffies64 authd-1.4.3/authd.c |
| |
| |
| @@ -347,6 +347,22 @@ static void create_opt(int argc, char *a |
| |
| static const char *const DELIM = ",: \t\r\n\v\f"; |
| |
| +static unsigned long long get_tok_ullong(char *s, unsigned base) { |
| + unsigned long long ull = ULLONG_MAX; |
| + |
| + assert(base <= 36); |
| + if ((s = strtok(s, DELIM)) != NULL) { |
| + char *endptr; |
| + |
| + ull = strtoull(s, &endptr, (int) base); |
| + if ((errno == ERANGE && ull == ULLONG_MAX) || is_bad_strto(s, endptr)) |
| + errno = EINVAL; |
| + } |
| + else errno = EINVAL; |
| + return ull; |
| +} |
| + |
| + |
| static unsigned long get_tok_uint(char *s, unsigned base) { |
| unsigned long ul = ULONG_MAX; |
| |
| @@ -643,7 +659,7 @@ static bool get_info(reply_t *out, reque |
| (void) get_tok_uint(NULL, 16); // tx_queue |
| (void) get_tok_uint(NULL, 16); // rx_queue |
| (void) get_tok_uint(NULL, 16); // tr (boolean) |
| - (void) get_tok_uint(NULL, 16); // tm->when (unit: jiffies) |
| + (void) get_tok_ullong(NULL, 16); // tm->when (unit: jiffies) |
| strtok(NULL, DELIM); // retrnsmt |
| uid = get_tok_uint(NULL, 10); // uid (base 10 uint) |
| strtok(NULL, DELIM); // timeout |