xref: /aosp_15_r20/external/selinux/libselinux/src/selinux_internal.c (revision 2d543d20722ada2425b5bdab9d0d1d29470e7bba)
1 #include "selinux_internal.h"
2 
3 #include <errno.h>
4 #include <stdint.h>
5 #include <stdlib.h>
6 #include <string.h>
7 
8 
9 #ifndef HAVE_STRLCPY
strlcpy(char * dest,const char * src,size_t size)10 size_t strlcpy(char *dest, const char *src, size_t size)
11 {
12 	size_t ret = strlen(src);
13 
14 	if (size) {
15 		size_t len = (ret >= size) ? size - 1 : ret;
16 		memcpy(dest, src, len);
17 		dest[len] = '\0';
18 	}
19 	return ret;
20 }
21 #endif /* HAVE_STRLCPY */
22 
23 #ifndef HAVE_REALLOCARRAY
reallocarray(void * ptr,size_t nmemb,size_t size)24 void *reallocarray(void *ptr, size_t nmemb, size_t size)
25 {
26 	if (size && nmemb > SIZE_MAX / size) {
27 		errno = ENOMEM;
28 		return NULL;
29 	}
30 
31 	return realloc(ptr, nmemb * size);
32 }
33 #endif /* HAVE_REALLOCARRAY */
34