11bb92983SJerome Forissier /* SPDX-License-Identifier: BSD-2-Clause */ 2b0104773SPascal Brand /* 3b0104773SPascal Brand * Copyright (c) 2014, STMicroelectronics International N.V. 4b0104773SPascal Brand */ 5b0104773SPascal Brand 6b0104773SPascal Brand /* 7b0104773SPascal Brand * This file provides extensions for functions not defined in <string.h> 8b0104773SPascal Brand */ 9b0104773SPascal Brand 10b0104773SPascal Brand #ifndef STRING_EXT_H 11b0104773SPascal Brand #define STRING_EXT_H 12b0104773SPascal Brand 13b0104773SPascal Brand #include <stddef.h> 14b0104773SPascal Brand #include <sys/cdefs.h> 15b0104773SPascal Brand 16b0104773SPascal Brand /* 17b0104773SPascal Brand * Copy src to string dst of siz size. At most siz-1 characters 18b0104773SPascal Brand * will be copied. Always NUL terminates (unless siz == 0). 19b0104773SPascal Brand * Returns strlen(src); if retval >= siz, truncation occurred. 20b0104773SPascal Brand */ 21b0104773SPascal Brand size_t strlcpy(char *dst, const char *src, size_t size); 22b0104773SPascal Brand size_t strlcat(char *dst, const char *src, size_t size); 23b0104773SPascal Brand 24*48e10604SJerome Forissier /* A constant-time version of memcmp() */ 25b7da54b3SJerome Forissier int consttime_memcmp(const void *p1, const void *p2, size_t nb); 26b7da54b3SJerome Forissier 27*48e10604SJerome Forissier /* Deprecated. For backward compatibility. */ 28*48e10604SJerome Forissier static inline int buf_compare_ct(const void *s1, const void *s2, size_t n) 29*48e10604SJerome Forissier { 30*48e10604SJerome Forissier return consttime_memcmp(s1, s2, n); 31*48e10604SJerome Forissier } 32*48e10604SJerome Forissier 331131d3c5SVolodymyr Babchuk /* Variant of strdup() that uses nex_malloc() instead of malloc() */ 341131d3c5SVolodymyr Babchuk char *nex_strdup(const char *s); 351131d3c5SVolodymyr Babchuk 36b0104773SPascal Brand #endif /* STRING_EXT_H */ 37