X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FModules%2FIPStack%2Fbuffer.c;h=ac27976163526fbea260314764aa2d09fe4617bb;hb=7cb0880c700b1acaf10d33e9b15dccaff1793a5c;hp=b3c8093ee24f9de51dc8df28f2021bf134d6513a;hpb=326d03e0dc49158f24ab14c92b7245d860ecf7ed;p=tpg%2Facess2.git diff --git a/KernelLand/Modules/IPStack/buffer.c b/KernelLand/Modules/IPStack/buffer.c index b3c8093e..ac279761 100644 --- a/KernelLand/Modules/IPStack/buffer.c +++ b/KernelLand/Modules/IPStack/buffer.c @@ -119,6 +119,13 @@ size_t IPStack_Buffer_GetData(tIPStackBuffer *Buffer, void *Dest, size_t MaxByte for( int i = Buffer->nSubBuffers; i -- && rem_space != 0; ) { len = MIN(Buffer->SubBuffers[i].PreLength, rem_space); + #if !DISABLE_ASSERTS + if( !CheckMem(Buffer->SubBuffers[i].Data, len) ) { + Log_Error("IPStack", "Buffer pre %i invalid (%p+0x%x)", + i, Buffer->SubBuffers[i].Data, len); + return 0; + } + #endif memcpy(dest, Buffer->SubBuffers[i].Data, len @@ -132,10 +139,9 @@ size_t IPStack_Buffer_GetData(tIPStackBuffer *Buffer, void *Dest, size_t MaxByte continue ; len = MIN(Buffer->SubBuffers[i].PostLength, rem_space); - memcpy(dest, - (Uint8*)Buffer->SubBuffers[i].Data + Buffer->SubBuffers[i].PreLength, - len - ); + void *ptr = (Uint8*)Buffer->SubBuffers[i].Data + Buffer->SubBuffers[i].PreLength; + ASSERT( CheckMem(ptr, len) ); + memcpy(dest, ptr, len); dest += len; rem_space -= len; }