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 } 32