Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * Copyright (c) 2022 Yubico AB. All rights reserved. |
3 | | * Use of this source code is governed by a BSD-style |
4 | | * license that can be found in the LICENSE file. |
5 | | * SPDX-License-Identifier: BSD-2-Clause |
6 | | */ |
7 | | |
8 | | #include <errno.h> |
9 | | #include <stdint.h> |
10 | | #include <stdlib.h> |
11 | | |
12 | | #include "fido.h" |
13 | | |
14 | | int |
15 | | fido_to_uint64(const char *str, int base, uint64_t *out) |
16 | 549k | { |
17 | 549k | char *ep; |
18 | 549k | unsigned long long ull; |
19 | | |
20 | 549k | errno = 0; |
21 | 549k | ull = strtoull(str, &ep, base); |
22 | 549k | if (str == ep || *ep != '\0') |
23 | 59 | return -1; |
24 | 548k | else if (ull == ULLONG_MAX && errno == ERANGE) |
25 | 10 | return -1; |
26 | 548k | else if (ull > UINT64_MAX) |
27 | 0 | return -1; |
28 | 548k | *out = (uint64_t)ull; |
29 | | |
30 | 548k | return 0; |
31 | 549k | } |