Index: sys/kern/kern_malloc.c =================================================================== --- sys/kern/kern_malloc.c +++ sys/kern/kern_malloc.c @@ -534,6 +534,17 @@ return ((void *) va); } +void * +mallocarray(size_t n, size_t size, struct malloc_type *type, int flags) +{ + size_t total = n * size; + + if (n != 0 && (total / n) != size) + return (NULL); + + return (malloc(total, type, flags)); +} + /* * free: * Index: sys/sys/malloc.h =================================================================== --- sys/sys/malloc.h +++ sys/sys/malloc.h @@ -177,6 +177,8 @@ void free(void *addr, struct malloc_type *type); void *malloc(unsigned long size, struct malloc_type *type, int flags) __malloc_like __result_use_check __alloc_size(1); +void *mallocarray(size_t n, size_t size, struct malloc_type *type, + int flags) __malloc_like __result_use_check __alloc_size(1); void malloc_init(void *); int malloc_last_fail(void); void malloc_type_allocated(struct malloc_type *type, unsigned long size);