]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/libfido2/src/util.c
libfido2: update to 1.13.0
[FreeBSD/FreeBSD.git] / contrib / libfido2 / src / util.c
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 {
17         char *ep;
18         unsigned long long ull;
19
20         errno = 0;
21         ull = strtoull(str, &ep, base);
22         if (str == ep || *ep != '\0')
23                 return -1;
24         else if (ull == ULLONG_MAX && errno == ERANGE)
25                 return -1;
26         else if (ull > UINT64_MAX)
27                 return -1;
28         *out = (uint64_t)ull;
29
30         return 0;
31 }