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