xref: /rk3399_ARM-atf/lib/libc/strnlen_secure.c (revision 38b5f93a2b27658918aa6b20d2fa57cffdadc74f)
1*eb088894SJit Loon Lim /*
2*eb088894SJit Loon Lim  * Copyright (c) 2024-2025, Altera Corporation. All rights reserved.
3*eb088894SJit Loon Lim  *
4*eb088894SJit Loon Lim  * SPDX-License-Identifier: BSD-3-Clause
5*eb088894SJit Loon Lim  */
6*eb088894SJit Loon Lim 
7*eb088894SJit Loon Lim #include <string.h>
8*eb088894SJit Loon Lim 
strnlen_secure(const char * str,size_t maxlen)9*eb088894SJit Loon Lim size_t strnlen_secure(const char *str, size_t maxlen)
10*eb088894SJit Loon Lim {
11*eb088894SJit Loon Lim 	size_t len = 0;
12*eb088894SJit Loon Lim 
13*eb088894SJit Loon Lim 	if (str == NULL) {
14*eb088894SJit Loon Lim 		return 0;
15*eb088894SJit Loon Lim 	}
16*eb088894SJit Loon Lim 
17*eb088894SJit Loon Lim 	while ((len < maxlen) && (str[len] != '\0')) {
18*eb088894SJit Loon Lim 		len++;
19*eb088894SJit Loon Lim 	}
20*eb088894SJit Loon Lim 
21*eb088894SJit Loon Lim 	return len;
22*eb088894SJit Loon Lim }
23