X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/37fb1e9cee287c9ae8c065ff517c508eb5f9d7dd..05b7549a0f980efa33265a091a5174a78851ce05:/lunaix-os/kernel/mm/kalloc.c?ds=sidebyside diff --git a/lunaix-os/kernel/mm/kalloc.c b/lunaix-os/kernel/mm/kalloc.c index 675a51f..6f04e2e 100644 --- a/lunaix-os/kernel/mm/kalloc.c +++ b/lunaix-os/kernel/mm/kalloc.c @@ -17,7 +17,7 @@ #include #include -#include +#include #include @@ -82,13 +82,20 @@ lxmalloc(size_t size) { } void* -lxcalloc(size_t size) { - void* ptr = lxmalloc(size); +lxcalloc(size_t n, size_t elem) { + size_t pd = n * elem; + + // overflow detection + if (pd < elem || pd < n) { + return NULL; + } + + void* ptr = lxmalloc(pd); if (!ptr) { return NULL; } - return memset(ptr, 0, size); + return memset(ptr, 0, pd); } void