git.ucc.asn.au
/
tpg
/
acess2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Usermode/libc++ - Implement map::insert and map::erase
[tpg/acess2.git]
/
KernelLand
/
Modules
/
IPStack
/
buffer.c
diff --git
a/KernelLand/Modules/IPStack/buffer.c
b/KernelLand/Modules/IPStack/buffer.c
index
b3c8093
..
3fe8b89
100644
(file)
--- a/
KernelLand/Modules/IPStack/buffer.c
+++ b/
KernelLand/Modules/IPStack/buffer.c
@@
-5,6
+5,7
@@
* buffer.c
* - Scatter-gather handling
*/
* buffer.c
* - Scatter-gather handling
*/
+#define DEBUG 0
#include "ipstack.h"
#include "include/buffer.h"
#include "ipstack.h"
#include "include/buffer.h"
@@
-23,7
+24,6
@@
struct sIPStackBuffer
size_t PostLength;
tIPStackBufferCb Cb;
void *CbArg;
size_t PostLength;
tIPStackBufferCb Cb;
void *CbArg;
- // TODO: Callbacks?
} SubBuffers[];
};
} SubBuffers[];
};
@@
-63,6
+63,7
@@
void IPStack_Buffer_ClearBuffer(tIPStackBuffer *Buffer)
void IPStack_Buffer_DestroyBuffer(tIPStackBuffer *Buffer)
{
void IPStack_Buffer_DestroyBuffer(tIPStackBuffer *Buffer)
{
+ LOG("Called with %p by %p", Buffer, __builtin_return_address(0));
ASSERT(Buffer);
IPStack_Buffer_ClearBuffer(Buffer);
Buffer->MaxSubBufffers = 0;
ASSERT(Buffer);
IPStack_Buffer_ClearBuffer(Buffer);
Buffer->MaxSubBufffers = 0;
@@
-119,6
+120,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);
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
memcpy(dest,
Buffer->SubBuffers[i].Data,
len
@@
-132,10
+140,9
@@
size_t IPStack_Buffer_GetData(tIPStackBuffer *Buffer, void *Dest, size_t MaxByte
continue ;
len = MIN(Buffer->SubBuffers[i].PostLength, rem_space);
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;
}
dest += len;
rem_space -= len;
}
UCC
git Repository :: git.ucc.asn.au