X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Flib.c;h=6263dc8ae00db17df6fe64c30b54fdbb234e218a;hb=25e3ce315ed2fb33a8a36b1be86b06a3fa235de8;hp=472351cb164bb7f75caeec92de019be2619cce62;hpb=f830c3b9bc88e968d34ea935e2125674d3a504b0;p=tpg%2Facess2.git diff --git a/Kernel/lib.c b/Kernel/lib.c index 472351cb..6263dc8a 100644 --- a/Kernel/lib.c +++ b/Kernel/lib.c @@ -854,10 +854,14 @@ int CheckString(const char *String) /** * \brief Check if a sized memory region is valid memory + * \return Boolean success */ int CheckMem(const void *Mem, int NumBytes) { tVAddr addr = (tVAddr)Mem; + + if( !MM_GetPhysAddr( addr ) ) + return 0; if( MM_IsUser( addr ) ) { @@ -962,6 +966,10 @@ void *memmove(void *__dest, const void *__src, size_t len) if( (tVAddr)dest + len < (tVAddr)src ) return memcpy(dest, src, len); + // NOTE: Assumes memcpy works forward + if( (tVAddr)dest < (tVAddr)src ) + return memcpy(dest, src, len); + if( (tVAddr)dest < (tVAddr)src ) block_size = (tVAddr)src - (tVAddr)dest; else