[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r22496 - gnunet/src/mesh
From: |
gnunet |
Subject: |
[GNUnet-SVN] r22496 - gnunet/src/mesh |
Date: |
Thu, 5 Jul 2012 15:54:59 +0200 |
Author: bartpolot
Date: 2012-07-05 15:54:59 +0200 (Thu, 05 Jul 2012)
New Revision: 22496
Modified:
gnunet/src/mesh/mesh_block_lib.c
Log:
- fixed bug for offset calculation, added debug statements
Modified: gnunet/src/mesh/mesh_block_lib.c
===================================================================
--- gnunet/src/mesh/mesh_block_lib.c 2012-07-05 13:53:57 UTC (rev 22495)
+++ gnunet/src/mesh/mesh_block_lib.c 2012-07-05 13:54:59 UTC (rev 22496)
@@ -94,25 +94,50 @@
char *aux;
offset = sizeof (struct MeshRegexBlock);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "* Start iterating block of size %u, off %u\n",
+ size, offset);
if (offset > size) // Is it safe to access the regex block?
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "* Block is smaller than struct MeshRegexBlock, END\n");
return GNUNET_SYSERR;
+ }
n = ntohl (block->n_proof);
- offset =+ n;
+ offset += n;
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "* Proof length: %u, off %u\n", n, offset);
if (offset > size) // Is it safe to access the regex proof?
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "* Block is smaller than Block + proof, END\n");
return GNUNET_SYSERR;
+ }
aux = (char *) &block[1]; // Skip regex block
aux = &aux[n]; // Skip regex proof
n = ntohl (block->n_edges);
- for (i = 0; i < n; n++) // aux always points at the end of the previous block
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "* Edges: %u\n", n);
+ for (i = 0; i < n; i++) // aux always points at the end of the previous block
{
offset += sizeof (struct MeshRegexEdge);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "* Edge %u, off %u\n", i, offset);
if (offset > size) // Is it safe to access the next edge block?
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "* Size not enough for MeshRegexEdge, END\n");
return GNUNET_SYSERR;
+ }
edge = (struct MeshRegexEdge *) aux;
n_token = ntohl (edge->n_token);
offset += n_token;
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "* Token lenght %u, off %u\n", n_token, offset);
if (offset > size) // Is it safe to access the edge token?
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "* Size not enough for edge token, END\n");
return GNUNET_SYSERR;
+ }
aux = (char *) &edge[1]; // Skip edge block
if (NULL != iterator)
if (GNUNET_NO == iterator (iter_cls, aux, n_token, &edge->key))
@@ -120,7 +145,15 @@
aux = &aux[n_token]; // Skip edge token
}
// The total size should be exactly the size of (regex + all edges) blocks
- return (offset == size) ? GNUNET_OK : GNUNET_SYSERR;
+ if (offset == size)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "* Block processed, END OK\n");
+ return GNUNET_OK;
+ }
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "* Size %u, read %u END KO\n", size, offset);
+ return GNUNET_SYSERR;
}
#if 0 /* keep Emacsens' auto-indent happy */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r22496 - gnunet/src/mesh,
gnunet <=